Spring Boot3.4.1 集成 mybatis plus

Spring Boot 集成 mybatis plus

第一步 引入依赖
xml 复制代码
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.10.1</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-jsqlparser</artifactId>
    <version>3.5.10.1</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.15</version>
</dependency>
第二步 引入配置
yml 复制代码
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
mybatis-plus:
  mapper-locations: classpath:/mapper/*Mapper.xml
  global-config:
    banner: false
    db-config:
      id-type: ASSIGN_ID
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    call-setters-on-nulls: true
第三步 引入配置类
java 复制代码
@Configuration
@MapperScan("com.demo.Mapper")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 配置分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 增加@Version乐观锁支持
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}
第四步 代码编写

实体类

java 复制代码
@TableName("t_emp")
public class Emp {
    @TableId(value = "emp_id")
    private int empId; // 注意:在Java中通常使用驼峰命名法,因此emp_id变为empId
    @TableField(value = "emp_name" , exist = true)
    private String empName;
    private Integer age;
    private Character sex;
    private String email;

    // 无参构造函数
    public Emp() {
    }

    // 全部参数的构造函数
    public Emp(int empId, String empName, Integer age, Character sex, String email) {
        this.empId = empId;
        this.empName = empName;
        this.age = age;
        this.sex = sex;
        this.email = email;
    }

    // Getter和Setter方法
    public int getEmpId() {
        return empId;
    }

    public void setEmpId(int empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Character getSex() {
        return sex;
    }

    public void setSex(Character sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        String ret = "Emp{" +
                "empId=" + empId +
                ", empName='" + empName + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
        return ret;
    }
}

编写mapper接口

java 复制代码
@Mapper
public interface EmpMapper extends BaseMapper<Emp> {

    Emp selectEmpById(int empId);
    List<Emp> selectAllEmp(@RequestParam("dto") Emp emp);
    @Select("SELECT * FROM  t_emp WHERE 1=1")
    IPage<Emp> selectEmpPage(IPage<Emp> page);
    @Select("SELECT * FROM  t_emp WHERE 1=1")
    List<Emp> selectEmpList(IPage<Emp> page);

}

编写mapper的sql映射文件

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.demo.mapper.EmpMapper">

    <select id="selectEmpById" resultType="com.demo.entity.Emp">
        select * from t_emp where emp_id = #{empId}
    </select>
    <select id="selectAllEmp" resultType="com.demo.entity.Emp">
        select * from t_emp
    </select>
</mapper>

编写service类

java 复制代码
@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {

    private static Logger logger = LoggerFactory.getLogger(EmpServiceImpl.class);

    public Emp selectEmpById(int empId) {
        return baseMapper.selectEmpById(empId);
    }

    public List<Emp> selectAllEmp(Emp emp) {
        return baseMapper.selectAllEmp(emp);
    }

    public int insertEmp(Emp emp) {
        return baseMapper.insert(emp);
    }

    public Page<Emp> selectEmpPage(Page<Emp> page) {
        LambdaQueryWrapper <Emp> wrapper = new LambdaQueryWrapper<>();
        return baseMapper.selectPage(page,wrapper);
    }

    @Override
    public void updateEmp(Emp emp) {
        baseMapper.updateById(emp);
    }

    @Override
    public void deleteEmp(int empId) {
        baseMapper.deleteById(empId);
    }
}
java 复制代码
public interface EmpService {

    Emp selectEmpById(int empId);
    List<Emp> selectAllEmp(Emp emp);
    int insertEmp(Emp emp);
    Page<Emp> selectEmpPage(Page<Emp> page);

    void updateEmp(Emp emp);

    void deleteEmp(int empId);
}
第五步 测试
java 复制代码
@RestController
@RequestMapping("test")
public class TestController {

    @Autowired
    private RedisUtils redisUtils;

    @Autowired
    private EmpService empService;

    @RequestMapping("/hello")
    public String hello() {
        redisUtils.set("test1","hello world");
        System.out.println(redisUtils.get("test1"));
        List<Emp> emps = empService.selectAllEmp(null);
        System.out.println(emps);
        return "hello";
    }
}
相关推荐
ZhangApple31 分钟前
微信自动化工具:让自己的微信变成智能机器人!
前端·后端
Codebee34 分钟前
OneCode 3.0: 注解驱动的Spring生态增强方案
后端·设计模式·架构
bobz96534 分钟前
kubevirt virtinformers
后端
LuckyLay35 分钟前
Django专家成长路线知识点——AI教你学Django
后端·python·django
Java微观世界36 分钟前
征服Java三大特性:封装×继承×多态+this/super高阶指南
后端
小郭的学习日记43 分钟前
互联网大厂Java面试:从Spring Boot到微服务的场景应用
spring boot·微服务·java面试·技术栈·电商平台
超级小忍1 小时前
在 Spring Boot 中使用 MyBatis 的 XML 文件编写 SQL 语句详解
xml·spring boot·mybatis
Java技术小馆1 小时前
RPC vs RESTful架构选择背后的技术博弈
后端·面试·架构
凌览1 小时前
因 GitHub 这个 31k Star 的宝藏仓库,我的开发效率 ×10
前端·javascript·后端
Q_Q19632884751 小时前
python的平安驾校管理系统
开发语言·spring boot·python·django·flask·node.js·php