ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis-Plus

2022-01-14 17:04:52  阅读:123  来源: 互联网

标签:void userMapper Test Plus user Mybatis new public


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 }

 

标签:void,userMapper,Test,Plus,user,Mybatis,new,public
来源: https://www.cnblogs.com/mushang/p/15802563.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有