ICode9

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

MybatisPlus 使用总结 2021-09-22

2021-09-25 13:58:15  阅读:200  来源: 互联网

标签:MybatisPlus 22 CRUD 09 userMapper user Mybatis 注解 主键


Mybatis 应用

1 Mybatis 入门与编码流程
2 mapper代理开发方式
3 全局配置文件
4 输入映射和输出映射
5 关联查询
6 延迟加载
7 动态SQL
8 Mybatis缓存

扩展内容

1 MybatisPlus 使用总结
2 MyBatis Plus学习文档
3 JDBC 内容回顾
4 Mybatis 源码分析


MybatisPlus 使用总结

一、 简介

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

使用步骤如下:

1.1 编辑 pom.xml 文件添加相关的依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.1.1</version>
</dependency>

【注意】引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。

1.2 相关配置

1、 application.yml 文件
编辑 application.yml 配置文件,主要是添加 druid 数据库的相关配置
2、在 Spring Boot 启动类中添加 @MapperScan 注解,用于扫描 Mapper 文件夹

@SpringBootApplication
@MapperScan("com.kkb.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }

}

【注意】如果是 SpringMVC 项目,需要在 <bean>标签中配置 MapperScan。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.kkb.mapper"/>
</bean>

然后还可以调整 SqlSessionFactory 为 Mybatis-Plus 的 SqlSessionFactory。

<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
</bean>

1.3 创建对应的类

新建 User 类
新建 UserMapper 映射接口类

使用方法示例:

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test1 {

    @Autowired
    private UserMapper userMapper;

    @Test
	public void testSelect(){
		
		// 此处 null 指的是不用根据参数去查询
		// 可以调用 CRUD 相关的多种方式

		// 1. 查询所有的数据
		List<User> userList = userMapper.selectList(null);
		userList.forEach(user -> System.out.println(user.getName()));
		
		// 2. 根据 id 删除
		userMapper.deleteById(1);
		
		// 3. 添加数据
		User user = new User();
		user.setName("老王");
		user.setEmail("laowang@kkb.com");
		user.setAge(18);
		userMapper.insert(user);
		
		// 4. 更新数据
		user.setName("老王王");
		user.setEmail("laowangwang@kkb.com");
		userMapper.updateById(user);
	}
    
}

1.4 常见注解

  1. @TableName:表名描述
  2. @TableId:主键注释
  3. @TableField:字段注解(非主键)
  4. @Version:乐观锁注解,主要用于标注在字段上
  5. @EnumValue:通枚举类注解(注解在枚举字段上)
  6. @TableLogic:表字段逻辑处理注解(逻辑删除)
  7. @SqlParser:租户注解(支持注解在 mapper 上)
  8. @KeySequence:序列主键策略,属性有:value、resultMap

二、CRUD 接口

2.1 Mapper CRUD 接口

  • 通用 CRUD 封装 BaseMapper 接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 泛型 T 为任意实体对象
  • 参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
  • 对象 Wrapper条件构造器
@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo {
	
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testSelect(){

        // 1.  添加数据(一定要保证表的主键是自增状态)
        User user = new User();
        user.setName("老王");
        user.setEmail("laowang@kkb.com");
        user.setAge(18);
        userMapper.insert(user);

        // 2. 根据 id 删除
        userMapper.deleteById(6);

        // 3. 根据 columnMap 条件,删除记录
        // Maps 属于 com.google.common.collect.Maps 包,来自于 Guava
        // Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库
        Map<String, Object> columnMap = Maps.newHashMap();
        columnMap.put("id", 3);

        userMapper.deleteByMap(columnMap);

        // 4. 查询所有数据
        // 不指定条件,直接传递 null
        List<User> userList = userMapper.selectList(null);
        userList.forEach(user -> System.out.println("用户:" + user));

        // 5. 批量查询
        List<String> idList = new ArrayList<String>();
        idList.add("1");
        idList.add("2");
        List<User> userList = userMapper.selectBatchIds(idList);
        userList.forEach(user -> System.out.println("用户:" + user));

    }
}

2.2 Service CRUD 接口

  • 通用 Service CRUD 封装 IService 接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆。
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper条件构造器

三、条件构造器

  • 以下出现的第一个入参 boolean condition 表示该条件是否加入最后生成的 sql 中

3.1 AbstractWrapper

QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件

注意:entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

3.2 SelectWrapper

3.3 UpdateWrapper

标签:MybatisPlus,22,CRUD,09,userMapper,user,Mybatis,注解,主键
来源: https://blog.csdn.net/qq_21438267/article/details/120422440

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

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

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

ICode9版权所有