springboot 整合 mybatis 详解

创建工程

使用springboot + mybatis搭建后端工程,具体步骤如下:

  1. new project
    在这里插入图片描述
  2. 选择spring Initializr ,看SDK和service URL是否正确,然后点击next
    在这里插入图片描述
  3. 填写工程名称及java版本,java版本根据上一步的SDK版本来选择,然后点击next
    在这里插入图片描述
  4. 选择依赖,然后next —> finish
    在这里插入图片描述
    在这里插入图片描述
  5. 创建目录如下,这里新添加了一个application.yml,不使用原本的application.properties,会把后者删除
    在这里插入图片描述

修改application.yml 配置文件

server:
  port: 8081   #  配置启动端口号
  servlet:
    context-path: /SSM02   #项目请求路径

db:
  host: localhost
  database: test
  username: root
  password: 123456

mybatis:
  config-location: classpath:mybatis-config.xml    #  mybatis主配置文件所在路径
  type-aliases-package: com.ssm02.mz.entity   #  定义所有操作类的别名所在包
  mapper-locations: classpath:mappers/*.xml   #  所有的mapper映射文件

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #  配置当前要使用的数据源的操作类型
    driverClassName: com.mysql.cj.jdbc.Driver    #  配置mysql的驱动程序类
    url: jdbc:mysql://${db.host}:3306/${db.database}?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8   #  数据库连接地址
    username: ${db.username}                      #  数据库用户名
    password: ${db.password}                      #  数据库密码
    filters: stat,wall,log4j                      #  配置druid过滤器,开启监控
    dbcp2:                                        #  进行数据库连接池的配置
      min-idle: 5                                 #  数据库连接池的最小维持连接数
      initial-size: 5                             #  初始化提供的连接数
      max-total: 20                                #  最大连接数
      max-wait-millis: 200                        #  等待连接获取的最大超时时间

pagehelper:                     #pagehelper分页插件
  helperDialect: mysql          #设置数据库方言
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

配置 mybatis-config.xml

在resources下新建 mybatis-config.xml,添加如下内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
    <settings>
        <setting name="useGeneratedKeys" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

基本目录如下
在这里插入图片描述

配置启动类

在这里插入图片描述

实现简单逻辑

User实体类

package com.ssm02.mz.entity;

import java.io.Serializable;

public class User implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public int id;
    public String userName;
    public String pwd;
    public String sex;
    public int age;
    public String job;
    public String phone;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", pwd='" + pwd + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }
}

dao层代码

package com.ssm02.mz.dao;

import com.ssm02.mz.entity.User;

import java.util.List;

public interface UserDao {

    public User login(User user);

    public List<User> selectList();
}

在mappers下添加UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.ssm02.mz.dao.UserDao">

    <resultMap type="com.ssm02.mz.entity.User" id="UserResult">
        <id property="id" column="id"></id>
        <result property="userName" column="user_ame"></result>
        <result property="pwd" column="password"></result>
    </resultMap>

    <select id="login" parameterType="com.ssm02.mz.entity.User" resultMap="UserResult">
 		select * from user where user_name=#{userName} and password=#{pwd}
 	</select>

    <insert id="add" parameterType="com.ssm02.mz.entity.User" useGeneratedKeys="true">
 		insert into user (user_name,password) values(#{userName},#{pwd})
 	</insert>

    <select id="selectList" resultType="com.ssm02.mz.entity.User">
        select
         id as id,
         user_no as userNo,
         user_name as userName,
         user_code as userCode,
         password as pwd,
         sex as sex,
         age as age,
         job as job,
         phone as phone from user where 1=1
    </select>

</mapper>

UserService接口

package com.ssm02.mz.service;

import com.ssm02.mz.entity.User;

import java.util.List;
import java.util.Map;

public interface UserService {

    public Map<String, Object> login(User user);

    public List<User> selectList();
    
}

UserServiceImpl 业务层实现类

package com.ssm02.mz.serviceImpl;

import com.ssm02.mz.dao.UserDao;
import com.ssm02.mz.entity.User;
import com.ssm02.mz.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    UserDao userDao;

    @Override
    public Map<String, Object> login(User user) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("data", userDao.login(user));
        return map;
    }

    @Override
    public List<User> selectList() {
        List<User> list = userDao.selectList();
        return list;
    }
}

在 util 下添加请求返回类

package com.ssm02.mz.util;

import java.io.Serializable;
import java.util.List;

public class ResultMessage implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private int code = 0;
    private String message;
    private List<?> data;

    public ResultMessage(){
    }
    public ResultMessage(int code, String message, List<?> data){
        this.code = code;
        this.message = message;
        this.data = data;
    }
    public static ResultMessage newInstance(int code, String message, List<?> data){
        ResultMessage obj = new ResultMessage();
        obj.code = code;
        obj.message = message;
        obj.data = data;
        return obj;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public List<?> getData() {
        return data;
    }
    public void setData(List<?> data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "ResultMessage [code=" + code + ", message=" + message
                + ", data=" + data + "]";
    }
}

UserController 接口层

package com.ssm02.mz.controller;

import com.ssm02.mz.entity.User;
import com.ssm02.mz.service.UserService;
import com.ssm02.mz.util.ResultMessage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping(value = "/user")
public class UserController {

    @Resource
    UserService userService;

    @ResponseBody
    @RequestMapping(value = "/login", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
    public ResultMessage login(User user){

        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        try {
            Map<String, Object> map = userService.login(user);
            list.add(map);
            return ResultMessage.newInstance(0, "登录成功", list);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultMessage.newInstance(1, "登录失败", list);
        }
    }

    @RequestMapping(value = "/selectList", method = RequestMethod.POST)
    @ResponseBody
    public ResultMessage selectList(){
        List<User> list = new ArrayList<User>();
        try {
            list = userService.selectList();

            return ResultMessage.newInstance(0, "查询成功", list);
        } catch (Exception e) {
            e.printStackTrace();
            return ResultMessage.newInstance(1, "查询失败", list);
//            return list;
        }
    }

}

都创建完成后,即可启动工程,打开启动类 MzApplication ,然后直接右击run即可,看到控制台输出如下即表示启动成功。

在这里插入图片描述
使用前端工程请求,调用后端接口;请求成功。
有时前端请求后端接口会出现跨域的问题,解决跨域问题见我另一篇博客 跨域处理
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值