在 spring boot 中整合 mybatis-plus 可以按照以下步骤进行:
一、整合步骤
1. 创建 spring boot 项目
首先,使用 spring initializr(https://start.spring.io/)创建一个新的 spring boot 项目。在创建过程中,选择以下依赖:
- spring web
- mysql driver
- mybatis-plus
2. 配置项目依赖
如果手动创建 pom.xml
文件,确保添加以下依赖:
<dependencies> <!-- spring boot starter web --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <!-- mybatis-plus starter --> <dependency> <groupid>com.baomidou</groupid> <artifactid>mybatis-plus-boot-starter</artifactid> <version>最新版本</version> </dependency> <!-- mysql driver --> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <scope>runtime</scope> </dependency> <!-- spring boot starter test --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies>
请将 最新版本
替换为 mybatis-plus 的实际最新版本号。
3. 配置数据源
在 application.yml
文件中配置数据库连接信息:
spring: datasource: url: jdbc:mysql://localhost:3306/yourdatabase username: yourusername password: yourpassword driver-class-name: com.mysql.cj.jdbc.driver
将 yourdatabase
、yourusername
和 yourpassword
替换为实际的数据库名称、用户名和密码。
4. 创建实体类
创建一个 java 实体类,用于映射数据库表。例如,创建一个 user
实体类:
package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.tablename; import lombok.data; @data @tablename("user") public class user { private long id; private string username; private string password; }
@data
是 lombok 注解,用于自动生成 getter
、setter
、equals
、hashcode
和 tostring
方法。@tablename
注解指定实体类对应的数据库表名。
5. 创建 mapper 接口
创建一个 mapper 接口,继承 basemapper
接口,basemapper
是 mybatis-plus 提供的基础接口,包含了常用的 crud 方法。例如,创建一个 usermapper
接口:
package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.basemapper; import com.example.demo.entity.user; import org.apache.ibatis.annotations.mapper; @mapper public interface usermapper extends basemapper<user> { // 可以在这里定义自定义的 sql 方法 }
@mapper
注解用于将该接口标记为 mybatis 的 mapper 接口。
6. 创建 service 层
创建一个 service 接口和其实现类。例如,创建一个 userservice
接口和 userserviceimpl
实现类:
package com.example.demo.service; import com.example.demo.entity.user; import com.baomidou.mybatisplus.extension.service.iservice; import java.util.list; public interface userservice extends iservice<user> { // 可以在这里定义自定义的业务方法 }
package com.example.demo.service.impl; import com.example.demo.entity.user; import com.example.demo.mapper.usermapper; import com.example.demo.service.userservice; import com.baomidou.mybatisplus.extension.service.impl.serviceimpl; import org.springframework.stereotype.service; import java.util.list; @service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 如果需要,可以重写或实现自定义方法 }
serviceimpl
是 mybatis-plus 提供的基础 service 实现类,它提供了基本的 crud 方法实现。
7. 创建 controller 层
创建一个 controller 层,用于处理客户端请求。例如,创建一个 usercontroller
:
package com.example.demo.controller; import com.example.demo.entity.user; import com.example.demo.service.userservice; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.*; import java.util.list; @restcontroller @requestmapping("/users") public class usercontroller { @autowired private userservice userservice; @getmapping public list<user> findall() { return userservice.list(); } @getmapping("/{id}") public user findbyid(@pathvariable long id) { return userservice.getbyid(id); } @postmapping public boolean save(@requestbody user user) { return userservice.save(user); } @putmapping public boolean update(@requestbody user user) { return userservice.updatebyid(user); } @deletemapping("/{id}") public boolean delete(@pathvariable long id) { return userservice.removebyid(id); } }
8. 配置 mybatis-plus 扫描
在 spring boot 主应用类上添加 @mapperscan
注解,扫描 mapper 接口所在的包:
package com.example.demo; import org.mybatis.spring.annotation.mapperscan; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplication @mapperscan("com.example.demo.mapper") public class demoapplication { public static void main(string[] args) { springapplication.run(demoapplication.class, args); } }
9. 测试
可以使用 spring boot 的测试框架来测试各个接口:
package com.example.demo; import com.example.demo.entity.user; import com.example.demo.service.userservice; import org.junit.jupiter.api.test; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import static org.junit.jupiter.api.assertions.*; @springboottest public class demoapplicationtests { @autowired private userservice userservice; @test public void testfindall() { asserttrue(userservice.list().size() >= 0); } @test public void testfindbyid() { user user = new user(); user.setusername("testuser"); user.setpassword("testpassword"); userservice.save(user); assertnotnull(userservice.getbyid(user.getid())); } @test public void testsave() { user user = new user(); user.setusername("newuser"); user.setpassword("newpassword"); asserttrue(userservice.save(user)); } @test public void testupdate() { user user = new user(); user.setusername("updateuser"); user.setpassword("updatepassword"); userservice.save(user); user.setpassword("newupdatepassword"); asserttrue(userservice.updatebyid(user)); } @test public void testdelete() { user user = new user(); user.setusername("deleteuser"); user.setpassword("deletepassword"); userservice.save(user); asserttrue(userservice.removebyid(user.getid())); } }
通过以上步骤,你就可以在 spring boot 项目中成功整合 mybatis-plus,并实现基本的 crud 操作。在实际项目中,你可以根据需求进一步扩展和优化代码。
二、 基本 crud 操作
在前面整合的基础上,我们已经有了基本的 crud 方法。
新增操作
在 userservice
中调用 save
方法:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 新增操作 @override public boolean saveuser(user user) { return this.save(user); } }
查询操作
根据 id 查询:调用 getbyid
方法。
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 根据 id 查询 @override public user getuserbyid(long id) { return this.getbyid(id); } }
查询所有:调用 list
方法。
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 查询所有 @override public list<user> getallusers() { return this.list(); } }
更新操作
调用 updatebyid
方法:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 更新操作 @override public boolean updateuser(user user) { return this.updatebyid(user); } }
删除操作
根据 id 删除:调用 removebyid
方法。
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { // 根据 id 删除 @override public boolean deleteuserbyid(long id) { return this.removebyid(id); } }
条件查询
使用 querywrapper
构建查询条件。
简单条件查询
例如,查询用户名等于某个值的用户:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public list<user> findusersbyusername(string username) { querywrapper<user> querywrapper = new querywrapper<>(); querywrapper.eq("username", username); return this.list(querywrapper); } }
复杂条件查询
多个条件组合,例如查询用户名包含某个字符串且年龄大于某个值的用户:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public list<user> findcomplexusers(string usernamelike, integer agegreaterthan) { querywrapper<user> querywrapper = new querywrapper<>(); querywrapper.like("username", usernamelike); querywrapper.gt("age", agegreaterthan); return this.list(querywrapper); } }
分页查询
使用 page
类实现分页查询。
首先,在 userservice
中定义分页查询方法:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public page<user> getuserpage(int current, int size) { page<user> page = new page<>(current, size); return this.page(page); } }
批量操作
批量插入
使用 savebatch
方法批量插入用户:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public boolean saveuserbatch(list<user> userlist) { return this.savebatch(userlist); } }
批量更新
使用 updatebatchbyid
方法批量更新用户:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public boolean updateuserbatch(list<user> userlist) { return this.updatebatchbyid(userlist); } }
批量删除
使用 removebyids
方法批量删除用户:
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public boolean deleteuserbatch(list<long> idlist) { return this.removebyids(idlist); } }
自定义 sql 操作
如果 mybatis-plus 提供的内置方法无法满足需求,可以在 mapper 接口中定义自定义 sql 方法。
在 mapper 接口中定义方法
@mapper public interface usermapper extends basemapper<user> { @select("select * from user where age > #{age}") list<user> findusersbyage(int age); }
在 service 层调用自定义方法
@service public class userserviceimpl extends serviceimpl<usermapper, user> implements userservice { @override public list<user> findusersbyage(int age) { return usermapper.findusersbyage(age); } }
示例代码总结
上述示例展示了在 spring boot 中使用 mybatis-plus 进行各种数据库操作的方法。在实际项目中,可以根据具体需求,在 service 层和 mapper 层灵活组合和扩展这些方法,以实现复杂的业务逻辑。
注意事项
- 确保数据库表结构与实体类属性对应,否则可能导致数据操作异常。
- 在使用
querywrapper
构建条件时,注意条件的正确性和安全性,防止 sql 注入。 - 对于分页操作,要合理设置分页参数,避免数据量过大导致性能问题。
通过以上内容,你可以全面掌握在 spring boot 中使用 mybatis-plus 进行数据库操作的方法。
到此这篇关于spring boot 中整合 mybatis-plus详细步骤的文章就介绍到这了,更多相关spring boot 整合 mybatis-plus内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论