跳至主要內容

SpringBoot与数据库编程-1

wangdx大约 11 分钟

SpringBoot 整合 MyBatis

SpringBoot 整合 MyBatis

  • 为了提高数据库程序的开发性能,在项目实现过程中往往会采用 ORM 框架实现数据库中数据操作,同时考虑到程序性能以及实现的简易型问题,往往会以 MyBatis 作为实现的首选,而在 SpringBoot 中为了便于开发者整合 MyBatis 开发框架提供了一个“mybatis-spring-boot-starter”的依赖管理,这样只要引入此依赖并在项目中配置好 DataSource,即可基于 MyBatis 实现数据表操作
  • SpringBoot 整合 MyBatis 在 SpringBoot 与 MyBatis 整合的处理过程之中可以将 MyBatis 相关的定义文件保存在'src/main/resources”目录之中,随后通过 application.yml 定义各个配置文件的路径即可使用
1、
// https://mvnrepository.com/artifact/org.mybatis/mybatis
implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.7'
// https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.2.0'
// https://mvnrepository.com/artifact/org.mybatis/mybatis
implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.15'
// https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '3.0.3'



2、
ext.versions = [    // 定义所有要使用的版本号
        springboot                          : '2.4.3', // SpringBoot版本号
        junit                               : '5.7.1', // 配置JUnit测试工具的版本编号
        junitPlatformLauncher               : '1.7.1',  // JUnit测试工具运行平台版本编号
        lombok                              : '1.18.18', // Lombok插件对应的版本号
        fastjson                            : '1.2.75', // FastJSON组件对应的版本号
        jackson                             : '2.12.2', // 配置Jackson相关依赖库
        itextpdf                            : '5.5.13.2', // PDF文件生成的依赖库
        easypoi                             : '4.3.0', // 生成Excel处理的依赖库
        hibernateValidator                  : '6.2.0.Final', // JSR303验证库
        prometheus                          : '1.6.5', // Prometheus监控数据版本
        shedlock                            : '4.23.0', // ShedLock组件
        springDataRedis                     : '2.4.5', // SpringDataRedis版本
        commonsPool2                        : '2.9.0', // 连接池版本
        jaxwsRi                             : '2.3.3', // JDK-WS依赖
        cxf                                 : '3.4.3', // WEBService开发框架版本
        mysql                               : '8.0.25', // MySQL驱动的版本
        druid                               : '1.2.6', // Druid版本
        springJdbc                          : '5.3.7', // SpringJDBC版本
        mybatis                             : '3.5.7', // MyBatis的开发版本
        mybatisSpringBoot                   : '2.2.0', // Mybatis-SpringBoot整合依赖
]
ext.libraries = [   // 定义所有的依赖库
        // 以下的配置为SpringBoot项目所需要的核心依赖
        'spring-boot-gradle-plugin': "org.springframework.boot:spring-boot-gradle-plugin:${versions.springboot}",
        // 以下的配置为与项目用例测试有关的依赖
        'junit-jupiter-api': "org.junit.jupiter:junit-jupiter-api:${versions.junit}",
        'junit-vintage-engine': "org.junit.vintage:junit-vintage-engine:${versions.junit}",
        'junit-jupiter-engine': "org.junit.jupiter:junit-jupiter-engine:${versions.junit}",
        'junit-platform-launcher': "org.junit.platform:junit-platform-launcher:${versions.junitPlatformLauncher}",
        'junit-bom': "org.junit:junit-bom:${versions.junit}",
        // 以下的配置为Lombok组件有关的依赖
        'lombok': "org.projectlombok:lombok:${versions.lombok}",
        // 以下的配置为FastJSON组件有关的依赖
        'fastjson': "com.alibaba:fastjson:${versions.fastjson}",
        // 以下的配置为Jackson将输出转换为XML有关的依赖
        'jackson-dataformat-xml': "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${versions.jackson}",
        'jackson-databind': "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}",
        'jackson-annotations': "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}",
        // 以下的配置为ITextPDF输出的有关依赖配置
        'itextpdf': "com.itextpdf:itextpdf:${versions.itextpdf}",
        // 以下的配置为生成Excel文件有关的依赖配置
        'easypoi-spring-boot-starter': "cn.afterturn:easypoi-spring-boot-starter:${versions.easypoi}",
        // 以下的配置为HibernateValidator实现的JSR303验证标准依赖
        'hibernate-validator': "org.hibernate.validator:hibernate-validator:${versions.hibernateValidator}",
        // 以下的配置为Prometheus监控数据操作
        'micrometer-registry-prometheus': "io.micrometer:micrometer-registry-prometheus:${versions.prometheus}",
        // 以下的配置为ShedLock分布式任务调度组件
        'shedlock-spring': "net.javacrumbs.shedlock:shedlock-spring:${versions.shedlock}",
        'shedlock-provider-redis-spring': "net.javacrumbs.shedlock:shedlock-provider-redis-spring:${versions.shedlock}",
        // 以下的配置为Redis缓存组件
        'spring-boot-starter-data-redis': "org.springframework.boot:spring-boot-starter-data-redis:${versions.springDataRedis}",
        'commons-pool2': "org.apache.commons:commons-pool2:${versions.commonsPool2}",
        // 以下的配置为WebService开发所需要的依赖:
        'jaxws-ri': "com.sun.xml.ws:jaxws-ri:${versions.jaxwsRi}",
        'cxf-spring-boot-starter-jaxws': "org.apache.cxf:cxf-spring-boot-starter-jaxws:${versions.cxf}",
        'cxf-rt-transports-http': "org.apache.cxf:cxf-rt-transports-http:${versions.cxf}",
        // 以下的配置为数据库开发所需要的依赖:
        'mysql-connector-java': "mysql:mysql-connector-java:${versions.mysql}",
        'druid-spring-boot-starter': "com.alibaba:druid-spring-boot-starter:${versions.druid}",
        'spring-jdbc': "org.springframework:spring-jdbc:${versions.springJdbc}",
        'druid': "com.alibaba:druid:${versions.druid}",
        // 以下的配置为MyBatis开发框架所需要的依赖:
        'mybatis': "::${versions.mybatis}",
        'mybatis-spring-boot-starter': "::${versions.mybatisSpringBoot}",
]

3、

project('microboot-database') { // 子模块
    dependencies { // 配置子模块依赖
        compile(project(':microboot-common')) // 引入其他子模块
        compile('org.springframework.boot:spring-boot-starter-actuator')
        compile(libraries.'mysql-connector-java')
        // compile(libraries.'druid-spring-boot-starter') // 删除掉此依赖库配置
        compile(libraries.'druid') // 添加原始依赖
        compile(libraries.'spring-jdbc')
        compile('org.springframework.boot:spring-boot-starter-aop')
        compile(libraries.'mybatis')
        compile(libraries.'mybatis-spring-boot-starter')
    }
}
4、
package com.yootk.vo;

import lombok.Data;

import java.util.Date;

@Data
public class Member {
    private String mid;
    private String name;
    private Integer age;
    private Double salary;
    private Date birthday;
    private String content;
}


5、
<?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>


6、
mybatis:
  config-location: classpath:META-INF/mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  type-aliases-package: com.yootk.vo  # 定义所有操作类的别名所在包
  mapper-locations: classpath:META-INF/mybatis/mapper/**/*.xml # 所有的mapper映射文件


7、
package com.yootk.dao;

import com.yootk.vo.Member;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface IMemberDAO { // 定义DAO接口
    public List<Member> findAll(); // 查询全部
}


8、
<?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.yootk.dao.IMemberDAO">
    <select id="findAll" resultType="Member">
        SELECT mid, name, age, salary, birthday, content FROM member;
    </select>
</mapper>

9、
package com.yootk.service;

import com.yootk.vo.Member;

import java.util.List;

public interface IMemberService {
    public List<Member> list();
}

10、
package com.yootk.service.impl.impl;

import com.yootk.dao.IMemberDAO;
import com.yootk.service.IMemberService;
import com.yootk.vo.Member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MemberServiceImpl implements IMemberService {
    @Autowired
    private IMemberDAO memberDAO;

    @Override
    public List<Member> list() {
        return this.memberDAO.findAll();
    }
}

11、
<logger name="com.yootk.dao" level="DEBUG"/>

12、
package com.yootk.test;

import com.yootk.StartSpringBootDatabaseApplication;
import com.yootk.service.IMemberService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.web.WebAppConfiguration;

@ExtendWith(SpringExtension.class) // 使用JUnit5测试工具
@WebAppConfiguration // 启动WEB运行环境
@SpringBootTest(classes = StartSpringBootDatabaseApplication.class) // 配置程序启动类
public class TestMemberService { // 编写测试类
    @Autowired
    private IMemberService memberService;
    @Test
    public void testFindAll() {
        System.out.println(this.memberService.list());
    }
}

SpringBoot 整合 MyBatisPlus

1、
// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus
implementation group: 'com.baomidou', name: 'mybatis-plus', version: '3.4.3'
// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter
implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.4.3'

// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter
implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.5'
// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus
implementation group: 'com.baomidou', name: 'mybatis-plus', version: '3.5.5'

// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-spring-boot3-starter
implementation group: 'com.baomidou', name: 'mybatis-plus-spring-boot3-starter', version: '3.5.5'





2、
ext.versions = [    // 定义所有要使用的版本号
        springboot                          : '2.4.3', // SpringBoot版本号
        junit                               : '5.7.1', // 配置JUnit测试工具的版本编号
        junitPlatformLauncher               : '1.7.1',  // JUnit测试工具运行平台版本编号
        lombok                              : '1.18.18', // Lombok插件对应的版本号
        fastjson                            : '1.2.75', // FastJSON组件对应的版本号
        jackson                             : '2.12.2', // 配置Jackson相关依赖库
        itextpdf                            : '5.5.13.2', // PDF文件生成的依赖库
        easypoi                             : '4.3.0', // 生成Excel处理的依赖库
        hibernateValidator                  : '6.2.0.Final', // JSR303验证库
        prometheus                          : '1.6.5', // Prometheus监控数据版本
        shedlock                            : '4.23.0', // ShedLock组件
        springDataRedis                     : '2.4.5', // SpringDataRedis版本
        commonsPool2                        : '2.9.0', // 连接池版本
        jaxwsRi                             : '2.3.3', // JDK-WS依赖
        cxf                                 : '3.4.3', // WEBService开发框架版本
        mysql                               : '8.0.25', // MySQL驱动的版本
        druid                               : '1.2.6', // Druid版本
        springJdbc                          : '5.3.7', // SpringJDBC版本
        mybatis                             : '3.5.7', // MyBatis的开发版本
        mybatisSpringBoot                   : '2.2.0', // Mybatis-SpringBoot整合依赖
        mybatisPlus                         : '3.4.3', // MyBatisPlus依赖版本
]
ext.libraries = [   // 定义所有的依赖库
        // 以下的配置为SpringBoot项目所需要的核心依赖
        'spring-boot-gradle-plugin': "org.springframework.boot:spring-boot-gradle-plugin:${versions.springboot}",
        // 以下的配置为与项目用例测试有关的依赖
        'junit-jupiter-api': "org.junit.jupiter:junit-jupiter-api:${versions.junit}",
        'junit-vintage-engine': "org.junit.vintage:junit-vintage-engine:${versions.junit}",
        'junit-jupiter-engine': "org.junit.jupiter:junit-jupiter-engine:${versions.junit}",
        'junit-platform-launcher': "org.junit.platform:junit-platform-launcher:${versions.junitPlatformLauncher}",
        'junit-bom': "org.junit:junit-bom:${versions.junit}",
        // 以下的配置为Lombok组件有关的依赖
        'lombok': "org.projectlombok:lombok:${versions.lombok}",
        // 以下的配置为FastJSON组件有关的依赖
        'fastjson': "com.alibaba:fastjson:${versions.fastjson}",
        // 以下的配置为Jackson将输出转换为XML有关的依赖
        'jackson-dataformat-xml': "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${versions.jackson}",
        'jackson-databind': "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}",
        'jackson-annotations': "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}",
        // 以下的配置为ITextPDF输出的有关依赖配置
        'itextpdf': "com.itextpdf:itextpdf:${versions.itextpdf}",
        // 以下的配置为生成Excel文件有关的依赖配置
        'easypoi-spring-boot-starter': "cn.afterturn:easypoi-spring-boot-starter:${versions.easypoi}",
        // 以下的配置为HibernateValidator实现的JSR303验证标准依赖
        'hibernate-validator': "org.hibernate.validator:hibernate-validator:${versions.hibernateValidator}",
        // 以下的配置为Prometheus监控数据操作
        'micrometer-registry-prometheus': "io.micrometer:micrometer-registry-prometheus:${versions.prometheus}",
        // 以下的配置为ShedLock分布式任务调度组件
        'shedlock-spring': "net.javacrumbs.shedlock:shedlock-spring:${versions.shedlock}",
        'shedlock-provider-redis-spring': "net.javacrumbs.shedlock:shedlock-provider-redis-spring:${versions.shedlock}",
        // 以下的配置为Redis缓存组件
        'spring-boot-starter-data-redis': "org.springframework.boot:spring-boot-starter-data-redis:${versions.springDataRedis}",
        'commons-pool2': "org.apache.commons:commons-pool2:${versions.commonsPool2}",
        // 以下的配置为WebService开发所需要的依赖:
        'jaxws-ri': "com.sun.xml.ws:jaxws-ri:${versions.jaxwsRi}",
        'cxf-spring-boot-starter-jaxws': "org.apache.cxf:cxf-spring-boot-starter-jaxws:${versions.cxf}",
        'cxf-rt-transports-http': "org.apache.cxf:cxf-rt-transports-http:${versions.cxf}",
        // 以下的配置为数据库开发所需要的依赖:
        'mysql-connector-java': "mysql:mysql-connector-java:${versions.mysql}",
        'druid-spring-boot-starter': "com.alibaba:druid-spring-boot-starter:${versions.druid}",
        'spring-jdbc': "org.springframework:spring-jdbc:${versions.springJdbc}",
        'druid': "com.alibaba:druid:${versions.druid}",
        // 以下的配置为MyBatis开发框架所需要的依赖:
        'mybatis': "org.mybatis:mybatis:${versions.mybatis}",
        'mybatis-spring-boot-starter': "org.mybatis.spring.boot:mybatis-spring-boot-starter:${versions.mybatisSpringBoot}",
        // 以下的配置为MybatisPlus开发框架所需要的依赖:
        'mybatis-plus': "com.baomidou:mybatis-plus:${versions.mybatisPlus}",
        'mybatis-plus-boot-starter': "com.baomidou:mybatis-plus-boot-starter:${versions.mybatisPlus}",
]

3、
project('microboot-database') { // 子模块
    dependencies { // 配置子模块依赖
        compile(project(':microboot-common')) // 引入其他子模块
        compile('org.springframework.boot:spring-boot-starter-actuator')
        compile(libraries.'mysql-connector-java')
        // compile(libraries.'druid-spring-boot-starter') // 删除掉此依赖库配置
        compile(libraries.'druid') // 添加原始依赖
        compile(libraries.'spring-jdbc')
        compile('org.springframework.boot:spring-boot-starter-aop')
        compile(libraries.'mybatis')
        compile(libraries.'mybatis-spring-boot-starter')
        compile(libraries.'mybatis-plus')
        compile(libraries.'mybatis-plus-boot-starter')
    }
}

4、
mybatis-plus:
  config-location: classpath:META-INF/mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  type-aliases-package: com.yootk.vo  # 定义所有操作类的别名所在包
  mapper-locations: classpath:META-INF/mybatis/mapper/**/*.xml # 所有的mapper映射文件
  global-config: # 全局配置
    db-config:
      logic-not-delete-value: 0 # 数据删除前
      logic-delete-value: 1 # 数据删除后

5、
package com.yootk.vo;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

@Data
@TableName("member") // 定义该VO类对应的数据表名称
public class Member {
    @TableId // 配置主键列
    private String mid;
    private String name;
    private Integer age;
    private Double salary;
    private Date birthday;
    private String content;
    @TableLogic // 逻辑删除处理
    private Integer isdel; // 逻辑删除字段
}


6、
package com.yootk.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig { // Mybatis拦截器配置
    @Bean
    public MybatisPlusInterceptor getMybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(
                new PaginationInnerInterceptor(DbType.MYSQL) // 使用MySQL分页实现
        );
        return interceptor;
    }
}


7、
package com.yootk.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yootk.vo.Member;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface IMemberDAO extends BaseMapper<Member> { // 定义DAO接口
    public List<Member> findAll(); // 查询全部,这个方法一定要存在有映射实现
}


8、
package com.yootk.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yootk.vo.Member;

import java.util.List;
import java.util.Set;

public interface IMemberService {
    public List<Member> list();
    public Member get(String mid); // 根据ID查询
    public boolean add(Member vo); // 增加数据
    public boolean delete(Set<String> ids); // 数据删除
    public IPage<Member> listSplit(String column, String keyword,
                                   Integer currentPage, Integer lineSize); // 分页查询
}


9、
package com.yootk.service.impl.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yootk.dao.IMemberDAO;
import com.yootk.service.IMemberService;
import com.yootk.vo.Member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;

@Service
public class MemberServiceImpl implements IMemberService {
    @Autowired
    private IMemberDAO memberDAO;

    @Override
    public List<Member> list() {
        return this.memberDAO.findAll();
    }

    @Override
    public Member get(String mid) {
        return this.memberDAO.selectById(mid);
    }

    @Override
    public boolean add(Member vo) {
        return this.memberDAO.insert(vo) > 0;
    }

    @Override
    public boolean delete(Set<String> ids) {
        return this.memberDAO.deleteBatchIds(ids) == ids.size();
    }

    @Override
    public IPage<Member> listSplit(String column, String keyword, Integer currentPage, Integer lineSize) {
        QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(column, keyword); // 模糊查询
        int count = this.memberDAO.selectCount(queryWrapper); // 统计数据行数
        IPage<Member> page = new Page<>(currentPage, lineSize, count);
        return this.memberDAO.selectPage(page, queryWrapper);
    }
}

10、
package com.yootk.test;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yootk.StartSpringBootDatabaseApplication;
import com.yootk.service.IMemberService;
import com.yootk.vo.Member;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.web.WebAppConfiguration;

import java.util.Date;
import java.util.Set;

@ExtendWith(SpringExtension.class) // 使用JUnit5测试工具
@WebAppConfiguration // 启动WEB运行环境
@SpringBootTest(classes = StartSpringBootDatabaseApplication.class) // 配置程序启动类
public class TestMemberService { // 编写测试类
    @Autowired
    private IMemberService memberService;

    @Test
    public void testFindAll() {
        System.out.println(this.memberService.list());
    }

    @Test
    public void testGet() {
        System.out.println(this.memberService.get("yootk"));
    }

    @Test
    public void testAdd() {
        Member vo = new Member();
        vo.setMid("yootk - " + Math.random());
        vo.setName("沐言科技");
        vo.setBirthday(new Date());
        vo.setSalary(865.0);
        vo.setContent("www.yootk.com");
        vo.setAge(16);
        System.out.println(this.memberService.add(vo));
    }

    @Test
    public void testSplit() {
        IPage<Member> page = this.memberService.listSplit("name", "沐言", 1, 5);
        System.out.println("总页数:" + page.getPages());
        System.out.println("总记录数:" + page.getTotal());
        System.out.println("响应内容:" + page.getRecords());
    }
    @Test
    public void testDelete() {
        Set<String> ids = Set.of("muyan", "yootk", "lixinghua");
        this.memberService.delete(ids);
    }
}

11、
package com.yootk.action;

import com.yootk.common.action.abs.AbstractBaseAction;
import com.yootk.service.IMemberService;
import com.yootk.vo.Member;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

@RestController
@RequestMapping("/member/*")
@Slf4j
public class MemberAction extends AbstractBaseAction {
    @Autowired
    private IMemberService memberService;
    @RequestMapping("list")
    public Object list() {
        log.info("查询全部Member数据。");
        return this.memberService.list();
    }
    @RequestMapping("get")
    public Object get(String mid) {
        log.info("查询用户数据:{}", mid);
        return this.memberService.get(mid);
    }
    @RequestMapping("add")
    public Object add(Member member) {
        log.info("增加新的用户数据:{}", member);
        return this.memberService.add(member);
    }
    @RequestMapping("delete")
    public Object delete(String ... id) {
        log.info("根据ID删除数据:{}", id);
        Set<String> ids = new HashSet<>();
        ids.addAll(Arrays.asList(id));
        return this.memberService.delete(ids);
    }
    @RequestMapping("split")
    public Object split(String column, String keyword, int currentPage, int lineSize) {
        log.info("数据分页显示,查询模糊列:{}、查询关键字:{}、当前页:{}、每页行数:{}");
        return this.memberService.listSplit(column, keyword, currentPage, lineSize);
    }
}


12、
localhost:80/member/get?mid=muyan
localhost:80/member/list
localhost:80/member/split?column=name&keyword=沐言&currentPage=1&lineSize=5
localhost:80/member/delete?id=muyan&id=yootk&id=lixinghua

基于 Bean 模式整合 MyBatisPlus 组件

1、
project('microboot-database') { // 子模块
    dependencies { // 配置子模块依赖
        compile(project(':microboot-common')) // 引入其他子模块
        compile('org.springframework.boot:spring-boot-starter-actuator')
        compile(libraries.'mysql-connector-java')
        // compile(libraries.'druid-spring-boot-starter') // 删除掉此依赖库配置
        compile(libraries.'druid') // 添加原始依赖
        compile(libraries.'spring-jdbc')
        compile('org.springframework.boot:spring-boot-starter-aop')
        compile(libraries.'mybatis')
        compile(libraries.'mybatis-spring-boot-starter')
        compile(libraries.'mybatis-plus')
    }
}

2、
mybatis-plus:
  config-location: classpath:META-INF/mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  type-aliases-package: com.yootk.vo  # 定义所有操作类的别名所在包
  mapper-locations: classpath:META-INF/mybatis/mapper/**/*.xml # 所有的mapper映射文件
  global-config: # 全局配置
    db-config:
      logic-not-delete-value: 0 # 数据删除前
      logic-delete-value: 1 # 数据删除后

3、
package com.yootk.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
public class MybatisPlusConfig { // Mybatis拦截器配置
    private ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    @Bean
    public MybatisPlusInterceptor getMybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(
                new PaginationInnerInterceptor(DbType.MYSQL) // 使用MySQL分页实现
        );
        return interceptor;
    }
    @Bean("mybatisSqlSessionFactoryBean")
    public MybatisSqlSessionFactoryBean getMybatisSqlSessionFactoryBean(
            @Autowired DataSource dataSource, // 要使用的数据源
            @Value("${mybatis-plus.config-location}") Resource configLocation, // 资源文件路径
            @Value("${mybatis-plus.type-aliases-package}") String typeAliasesPackage, // 扫描别名
            @Value("${mybatis-plus.mapper-locations}") String mapperLocations, // Mapping映射路径
            @Value("${mybatis-plus.global-config.db-config.logic-not-delete-value}") String logicNotDeleteValue,
            @Value("${mybatis-plus.global-config.db-config.logic-delete-value:}") String logicDeleteValue
    ) throws Exception {
        MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
        mybatisPlus.setDataSource(dataSource); // 配置项目中要使用的数据源
        mybatisPlus.setVfs(SpringBootVFS.class); // 配置程序的扫描类
        mybatisPlus.setTypeAliasesPackage(typeAliasesPackage); // 扫描包的别名
        Resource[] mappings = this.resourcePatternResolver.getResources(mapperLocations);
        mybatisPlus.setMapperLocations(mappings);
        GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig(); // 数据配置
        dbConfig.setLogicNotDeleteValue(logicNotDeleteValue); // 未删除时的数据内容
        dbConfig.setLogicDeleteValue(logicDeleteValue); // 删除时的数据内容
        GlobalConfig globalConfig = new GlobalConfig(); // 定义全局配置
        globalConfig.setDbConfig(dbConfig); // 全局配置项
        mybatisPlus.setGlobalConfig(globalConfig);
        return mybatisPlus;
    }
}

demo


上次编辑于: