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";
    }
}
相关推荐
IT_陈寒7 分钟前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风42 分钟前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
考虑考虑1 小时前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥1 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督2 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
勇往直前plus2 小时前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵2 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师2 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥2 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM972 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端