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";
    }
}
相关推荐
麦兜*8 分钟前
Spring Boot 与 Ollama 集成部署私有LLM服务 的完整避坑指南,涵盖 环境配置、模型管理、性能优化 和 安全加固
java·spring boot·后端·安全·spring cloud·性能优化
树獭叔叔10 分钟前
详解 Python 的异步上下文管理器语法
后端·python
烟沙九洲12 分钟前
服务之间远程Feign调用,出现参数丢失
java·spring boot
coding随想17 分钟前
深入浅出数据库语言SQL常用方法
后端
PetterHillWater28 分钟前
百度Comate的AI编程工具小试
后端·aigc
ezl1fe33 分钟前
RAG 每日一技(十三):检索一次不够?学习查询改写与迭代式检索!
人工智能·后端
自由的疯39 分钟前
Java 17 新特性之 instanceof 运算符
java·后端·架构
Cache技术分享39 分钟前
152. Java Lambda 表达式 - 深入理解 Java 的 Predicate 接口及其高效用法
前端·后端
卓伊凡41 分钟前
MongoDB 从3.4.0升级到4.0.0完整指南实战-优雅草蜻蜓I即时通讯水银版成功升级-卓伊凡|bigniu
数据库·后端
艾迪的技术之路42 分钟前
Superset安装步骤
后端·面试·github