Mybatis-Plus
简介
1、开始一个springboot项目
2、导入依赖
1 <--mybatis-plus--> 2 <dependency> 3 <groupId>com.baomidou</groupId> 4 <artifactId>mybatis-plus-boot-starter</artifactId> 5 <version>3.4.3.4</version> 6 </dependency> 7 8 <dependency> 9 <groupId>org.projectlombok</groupId> 10 <artifactId>lombok</artifactId> 11 <version>1.18.20</version> 12 </dependency> 13 <dependency> 14 <groupId>mysql</groupId> 15 <artifactId>mysql-connector-java</artifactId> 16 <version>5.1.46</version> 17 </dependency>
3、配置数据连接
1 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 2 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8 3 spring.datasource.username=root 4 spring.datasource.password=root
4、编写Mapper
mapper继承BaseMapper<User>,这里的"User"对应着想要操作的实体类
1 //在对应的mapper上面继承basemapper 2 @Mapper 3 public interface UserMapper extends BaseMapper<User> { 4 }
5、进行一次测试!
1 @SpringBootTest 2 class MybatisplusApplicationTests { 3 @Autowired 4 private UserMapper userMapper; 5 @Test 6 void contextLoads() { 7 List<User> users = userMapper.selectList(null); 8 users.forEach(System.out::println); 9 10 } 11 }
mybatis-plus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl
1 @Test 2 public void testInsert(){ 3 User user = new User(); 4 user.setAge(18); 5 user.setName("mushang"); 6 user.setEmail("71970355@qq.com"); 7 userMapper.insert(user); 8 }
实体类字段上@TableId(type = IdType.AUTO)
(ps:数据库字段一定要是自增的)
其余的源码解释
1 public enum IdType { 2 AUTO(0), //数据库Id自增 3 NONE(1),//未设置主键 4 INPUT(2),//手动输入 5 ASSIGN_ID(3), 6 ASSIGN_UUID(4);}
1 @Test 2 public void testUpdate(){ 3 User user = new User(); 4 user.setId(5); 5 user.setName("mushang"); 6 7 userMapper.updateById(user); 8 }
查询单个用户
1 @Test 2 public void testSel(){ 3 System.out.println(userMapper.selectById(1)); 4 }
查询多个用户
1 @Test 2 public void testSel(){ 3 //Arrays.asList数组转成集合 4 List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3)); 5 users.forEach(System.out::println); 6 }
条件查询
1 @Test 2 public void testSel(){ 3 HashMap<String, Object> map = new HashMap<>(); 4 map.put("name","mushang"); 5 List<User> users = userMapper.selectByMap(map); 6 users.forEach(System.out::println); 7 }
分页查询的三种方式:
1、原始的limit进行分页
2、pagehelp第三方查询
3、mybatis自带的分页
导入分页插件
1 @Configuration 2 @EnableTransactionManagement 3 @MapperScan("com.mu.mybatisplus.dao") 4 public class MyMavitsPlusConfig { 5 @Bean 6 public PaginationInnerInterceptor paginationInterceptor() { 7 PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); 8 return paginationInnerInterceptor; 9 } 10 }
进行分页查询测试
1 @Test 2 public void testFenYe(){ 3 //参数一:当前页 参数二:页面大小 4 Page<User> objectPage = new Page<>(1, 5); 5 Page<User> page = userMapper.selectPage(objectPage, null); 6 objectPage.getRecords().forEach(System.out::println); 7 }
1 userMapper.deleteBatchIds(); 2 userMapper.deleteById(); 3 userMapper.deleteByMap();
物理删除:从数据库中直接移除
逻辑删除 :在数据库中没有直接删除,而是通过一个变量来让他失效,delete = 0 =>delete = 1
管理员可以查看被删除的记录!防止数据的丢失,类似于回收站!
逻辑删除的实例:
1、在数据库中增加一个deleted字段
1 @TableLogic //逻辑删除 2 private Integer deleted;
3、在配置文件中配置
1 mybatis-plus.global-config.db-config.logic-delete-field=flag 2 //全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) 3 mybatis-plus.global-config.db-config.logic-not-delete-value=1 //# 逻辑未删除值(默认为 0) 4 mybatis-plus.global-config.db-config.logic-delete-value=0 5 //逻辑已删除值(默认为 1)
查询:QueryWrapper
更新:UpdateWrapper
1 @Test 2 public void testWrapper(){ 3 QueryWrapper<User> wrapper = new QueryWrapper<>(); 4 wrapper.eq("name","mushang"); 5 User user = userMapper.selectOne(wrapper); 6 System.out.println(user); 7 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?