标签: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 常见注解
- @TableName:表名描述
- @TableId:主键注释
- @TableField:字段注解(非主键)
- @Version:乐观锁注解,主要用于标注在字段上
- @EnumValue:通枚举类注解(注解在枚举字段上)
- @TableLogic:表字段逻辑处理注解(逻辑删除)
- @SqlParser:租户注解(支持注解在 mapper 上)
- @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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。