SpringBoot整合Mybatis详细教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lizheng1992123/article/details/81608007

一、准备工作

先在eclipse中导入mybatis的dtd约束:

  • mybatis-3-config.dtd
  • mybatis-3-mapper.dtd

导入方法如图:
这里写图片描述
新建一张数据表dept:

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
  `deptno` bigint(20) NOT NULL AUTO_INCREMENT,
  `dname` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`deptno`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('1', '开发部');
INSERT INTO `dept` VALUES ('2', '财务部');
INSERT INTO `dept` VALUES ('3', '市场部');
INSERT INTO `dept` VALUES ('4', '后勤部');
INSERT INTO `dept` VALUES ('5', '公关部');
INSERT INTO `dept` VALUES ('9', '测试部');
INSERT INTO `dept` VALUES ('10', '测试部');

二、Mybatis环境搭建

第一步:添加pom依赖,导入mybatis所需jar包,pom依赖如下:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- druid依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>
        <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

    </dependencies>

第二步:在src/main/resource目录下新建application.yml配置文件:

server:
  port: 8000   #  配置启动端口号  

mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml    #  mybatis主配置文件所在路径
  type-aliases-package: cn.lizheng.study.mybatis.pojo   #  定义所有操作类的别名所在包
  mapper-locations:                                     #  所有的mapper映射文件
    - classpath:mybatis/mapper/*.xml

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

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

第三步:书写mybatis主配置文件(mybatis.cfg.xml
在src/main/resource目录下新建文件夹目录:mybati,然后将在该目录下新建mybati.cfg.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>

    <!-- 进行mybatis的相应的环境的属性定义 -->
    <settings>
        <!-- 在本项目中开启二级缓存 -->
        <setting name="cacheEnabled" value="true"/>
    </settings>

</configuration>

第四步:在src/mian/java目录中新建springboot启动类ApplicaitonStarter.java

package cn.lizheng.study.mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ApplicationStarter {
    public static void main(String[] args){
        SpringApplication.run(ApplicationStarter.class, args);
    }
}   

第五步:编写pojo:Dept.java

package cn.lizheng.study.mybatis.pojo;

public class Dept {
    private Long deptno;
    private String dname;
    public Long getDeptno() {
        return deptno;
    }
    public void setDeptno(Long deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
}

第六步、编写pojo对应的mapper接口

package cn.lizheng.study.mybatis.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import cn.lizheng.study.mybatis.pojo.Dept;

/**
 * dept表mapper接口
 * @author zhengL
 *
 */
@Mapper  //  该注解一定要加,否则无法映射到mybatis的***.xml局部配置文件
public interface DeptMapper {

    List<Dept> findAll(); 

    void addDept(Dept dept);
}

第七步、创建dept表的mybatis局部配置文件dept.xml
在第二步编写application.yml配置文件时,我们添加了mybatis的相关配置如下:

mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml    #  配置文件所在路径
  type-aliases-package: cn.lizheng.study.mybatis.pojo   #  定义所有操作类的别名所在包
  mapper-locations:                                     #  所有的mapper映射文件
    - classpath:mybatis/mapper/*.xml

这个地方的三个配置路径一定要正确。所以我们在src/main/resource/mybatis目录下新建文件夹mapper,然后新建一个dept.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="cn.lizheng.study.mybatis.mapper.DeptMapper">
    <!-- 通过ID查询一个用户 -->
    <select id="findAll" resultType="Dept">
        SELECT deptno,dname FROM dept ;
    </select>

    <insert id="addDept" parameterType="Dept" >
        INSERT INTO dept(dname) VALUES (#{dname}) ;
    </insert>
</mapper>

这个地方要注意namespace的路径一定要写正确。

第八步、创建DeptService接口

package cn.lizheng.study.mybatis.service;

import java.util.List;

import org.springframework.stereotype.Service;

import cn.lizheng.study.mybatis.pojo.Dept;

/**
 * dept服务接口
 * @author zhengL
 *
 */
public interface DeptService {
    /**
     * 获取所有部门信息
     * @return
     */
    List<Dept> findAll(); 
    /**
     * 添加部门 
     * @param dept
     */
    void addDept(Dept dept);
}

第九步、创建DeptService接口的实现类DeptServiceImpl.java

package cn.lizheng.study.mybatis.serviceimpl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.lizheng.study.mybatis.mapper.DeptMapper;
import cn.lizheng.study.mybatis.pojo.Dept;
import cn.lizheng.study.mybatis.service.DeptService;

/**
 * dept服务接口实现类
 * @author zhengL
 *
 */
@Service  //  该注解一定要写,否则无法注册bean
public class DeptServiceImpl implements DeptService{

    @Autowired
    private DeptMapper deptMapper;  //  注入mapper

    @Override
    public List<Dept> findAll() {
        return deptMapper.findAll();
    }

    @Override
    public void addDept(Dept dept) {
        deptMapper.addDept(dept);
    }

}

第十步、编写dept对应的控制器类:DeptController.java

package cn.lizheng.study.mybatis.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.lizheng.study.mybatis.pojo.Dept;
import cn.lizheng.study.mybatis.service.DeptService;

/**
 * dept控制器
 * @author zhengL
 *
 */
@RestController  //  此注解指明该控制器直接返回数据,而不进行页面跳转
@RequestMapping("/dept")  //  定义路由信息
public class DeptController {

    @Autowired
    private DeptService deptService;

    /**
     * 查询所有部门信息
     * @return
     */
    @RequestMapping("/findAll")  //  则次路由信息应该是/dept/findAll
    public List<Dept> findAll(){
        return deptService.findAll();
    }
}

最后在ApplicationStarter类上追加如下配置:
@MapperScan(“cn.lizheng.study.mybatis.mapper”)

运行项目,然后在浏览器输入http://localhost:8000/dept/findAll,然后回车:

这里写图片描述

成功!!!!

展开阅读全文

没有更多推荐了,返回首页