Mybatis-Plus

1、概述:

MybatisPlus可以节省大量的时间,所有的CURD代码它都可以自动化完成。

简介

官网:https://mp.baomidou.com/

MyBatis-Plus (opens new window)简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2、Hello,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 }
复制代码

3、配置日志

mybatis-plus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl

4、CRUD

插入操作

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 }

分布式系统唯一ID生成方案汇总:https://www.cnblogs.com/haoxinyue/p/5208136.html

雪花算法:

 

snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。具体实现的代码可以参看https://github.com/twitter/snowflake。雪花算法支持的TPS可以达到419万左右(2^22*1000)。

主键策略

主键自增

实体类字段上@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字段

2、实体类中增加属性

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 }

 

posted @   暮商  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示