开发者

Spring Boot整合MyBatis-Plus实现CRUD操作的示例代码

目录
  • 环境准备
  • 实现步骤
    • 1. 创建项目并添加依赖
    • 2. 配置数据库连接(application.yml)
    • 3. 创建实体类
    • 4. 创建Mapper接口
    • 5. 实现Service层(可选增强)
    • 6. 添加分页插件配置
    • 7. 创建Controller
  • 测试示例
    • 插入数据(POST /user)
    • 分页查询(需自定义方法)
  • 关键特性说明
    • 常见问题排查
      • 扩展建议

        本文将演示如何在Spring Boot项目中整合MyBATis-Plus框架,快速实现数据库的增删改查操作。相较于原生MyBatis,MyBatis-Plus提供了更简洁的API和自动化功能。

        环境准备

        • JDK 1.8+
        • mysql 5.7+
        • Spring Boot 2.7.x
        • MyBatis-Plus 3.5.x

        实现步骤

        1. 创建项目并添加依赖

        通过Spring Initializr创建项目时勾选:

        • Spring Web
        • MySQL Driver

        手动添加MyBatis-Plus依赖(pom.XML):

        <dependency>
            <groupId>com.baomidou<php;/groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        

        2. 配置数据库连接(application.yml)

        spring:
          datasource:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/mjavascriptp_demo?useSSL=false&serverTimezone=Asia/Shanghai
            username: root
            password: 123456
        
        mybatis-plus:
          configuration:
            log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志
          global-config:
            db-config:
              id-type: assign_id # 主键生成策略(使用雪花算法)
        

        3. 创建实体类

        @Data
        @TableName("t_user") // 指定表名
        public class User {
            @TableId(type = IdType.ASSIGN_ID) // 雪花算法生成ID
            private Long id;
            private String username;
            private Integer age;
            private String email;
        }
        

        4. 创建Mapper接口

        @Mapper
        public interface UserMapper extends BaseMapper<User> {
            // 继承BaseMapper后已包含基础CRUD方法
        }
        

        5. 实现Service层(可选增强)

        @Service
        public class UserService {
            @Autowired
            private UserMapper userMapper;
        
            // 插入
            public int addUser(User user) {
                return userMapper.insert(user);
            }
        
            // 查询全部
            public List<User> getAllUsers() {
                return userMapper.selectList(null);
            }
        
            // 条件查询
            public User getUserById(Long id) {
                return userMapper.selectById(id);
            }
        
            // 更新
            public int updateUser(User user) {
                return userMapper.updateById(user);
            }
        
            // 删除
            public int deleteUser(Long id) {
                return userMapper.deleteById(id);
            }
        }
        

        6. 添加分页插件配置

        @Configuration
        public class MybatisPlusConfig {
            @Bean
            public MybatisPlusInterceptor mybatisPlusInterceptor() {
                MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
                interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
                return interceptor;
            }
        }
        

        7. 创建Controller

        @RestController
        @RequestMapping("/user")
        public class UserController {
            @Autowired
            private UserService userService;
        
            @PostMapping
            public String add(@RequestBody User user) {
                userService.addUser(user);
                return "插入成功";
            }
        
            @GetMapping("/{id}")
            public User getById(@PathVariable Long id) {
                return userService.getUserById(id);
            }
        
            @GetMapping("/list")
            public List<User> list() {
                return userService.getAllUsers();
            }
        
            @PutMapping
            public String update(@RequestBody User user) {
                userService.updateUser(user);
                return "更新成功";
            }
        
            @DeleteMapping("/{id}")
            public String delete(@PathVariable Long id) {
                userService.deleteUser(id);
                return "删除成功";
            }
        }
        

        测试示例

        插入数据(POST /user)

        {
            "username": "张三",
        YvQHy    "age": 25,
            "email": "zhangsan@example.com"
        }
        

        分页查询(需自定义方法)

        // 在Mapper中添加:
        @Select("SELECT * FROM t_user WHERE age > #{age}")
        Page<User> selectPageByAge(Page<User> page, @Param("age") Integer age);
        
        // Controller调用:
        @GetMapping("/page")
        public Page<User> page(@RequestParam(defaultValue = "1") Integer pageNum,
                              @RequestParam(defaultValue = "10") Integer pageSize) {
            Page<User> page = new Page<>(pageNum, pageSize);
            return userMapper.selectPage(page, null);
        }
        

        关键特性说明

        自动生成SQL:无需编写XML文件,基础CRUD自动实现

        主键策略:支持AUTO(数据库自增)、ASSIGN_ID(雪花算法)、UUID

        条件构造器:通过QueryWrapper构建复杂查询条件

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.like("username", "张").lt("age", 30);
        userMapper.selectList(wrapper);
        

        常见问题排查

        启动时报错找不到Mapper

        • 确保启动类添加@MapperScan("com.example.mapper")
        • 检查Mapper接口是否标注@Mapper注解

        字段映射失败

        • 检查数据库字段名是否符合驼峰转下划线规则
        • 使用@TableField(value = "db_column")指定字段映射

        分页失效

        • 确认已添加分页插件配置
        • 查询方法参数必须为Page对象

        扩展建议

        • 使用代码生成器快速生成Entity/Mapper/Service代码
        • 结合LambdaQueryWrajspper实现类型安全的查询条件
        • 通过@Version实现乐观锁功能

        到此这篇关于Spring Boot整合MyBatispython-Plus实现CRUD操作的示例代码的文章就介绍到这了,更多相关SpringBoot MyBatis-Plus实现CRUD操作内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)! 

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜