文章目录
前言
推荐在mybatis-plus官网上看,比较详细,本篇文章适合初次使用mybatis-plus,简单使用CRUD接口
mybatis-plus使用和介绍,从使用中说明
一、mybatis-plus介绍
Mybatis-Plus是一个Mybatis的增强工具,在不改动Mybatis的基础上做了功能升级,简化开发、提升效率
二、mybatis-plus整合springboot使用
第一步:在pom.xml上加入依赖包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
第二步:在.yml或者. properties文件设置配置信息(这里是yml的写法)
mybatis-plus:
mapper-locations: classpath*:mybatis/mapper/*Mapper.xml #扫描xml的路径,支持原来的xml配置
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 输入sql执行情况
第三步:在接口类上继承BaseMapper(T是泛型,是操作库表的实体)
public interface UserMapper extends BaseMapper<UserEntity> {
}
继承BaseMapper是为了使用mybatis-plus封装好的CRUD,里面的操作可以满足我们大部分的业务需求
第四步:T实体设置,实体需要Serializable
实体 | 设置说明 |
---|---|
@TableName(“sys_user”) | 设置表名,如果表名和实体类名一致开始不用设置 |
@TableId(“userId”) | 设置ID,在封装好的CRUD有通过ID查找和删除的操作,需要你指定是按个字段,如果不设置,默认字段名就是ID,如果库表的字段没有id这个字段就是报错,找不到字段名 |
@TableField(“userName”) | 字段名设置,我们写到代码都是使用驼峰命名,在mybatis-plus里,实体的属性名是驼峰命名是默认转换成翻译为kebab_case,把驼峰换成"_"来表示。如果库表的字段名和属性不一致,需要自己设置 |
代码样例:
@TableName("sys_user")
@Data
public class UserEntity implements Serializable {
@TableId("userId")
private int userId;
@TableField("userName")
private String userName;
private int age;
private String sex;
private String password;
}
第五步:启动类加入扫描dao
@MapperScan("org.example.mapper")
第六步:完成整合
三、mybatis-plus的CRUD接口使用例子说明
CRUD接口有两个不同选择,一个是IService,一个是BaseMapper
3.1 BaseMapper CRUD接口使用例子(用到的实体和第二章是实体一致)
1) Insert
/**
* 新增数据
*
* @return
*/
@Override
public int addUser(UserEntity userEntity) {
return userMapper.insert(userEntity);
}
2) delete
/**
* 根据主键删除
*
* @return
*/
@Override
public int deleteUserById(String id) {
return userMapper.deleteById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public int deleteUserBatchIds(List<String> ids) {
return userMapper.deleteBatchIds(ids);
}
/**
* 条件删除,表达式
*
* @return
*/
@Override
public int deleteUser() {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 19)
.le("age", 30);
return userMapper.delete(queryWrapper);
// //字段删除,都是“=”
// Map<String, Object> columnMap = new HashMap<>();
// columnMap.put("userName", name);
// return userMapper.deleteByMap(columnMap);
}
3) update
/**
* 主键更新
*
* @return
*/
@Override
public int updateUserById(UserEntity userEntity) {
return userMapper.updateById(userEntity);
}
/**
* 条件更新,update不会更新主键
* ==> Preparing: UPDATE sys_user SET userName=?, age=?, sex=?, password=? WHERE (age >= ? AND age <= ?)
* ==> Parameters: aaaaaaaaaaaaa(String), 60(Integer), 男(String), 12sssssssssss3(String), 30(Integer), 40(Integer)
* <== Updates: 1
* @return
*/
@Override
public int updateUser(UserEntity userEntity) {
UpdateWrapper<UserEntity> updateWrapper = new UpdateWrapper<>();
updateWrapper.ge("age", 30)
.le("age", 40);
return userMapper.update(userEntity,updateWrapper);
}
4) select
/**
* mybatis plus 使用selectById,id标识是在实体上的字段标志@TableId("字段名"),不然默认是去id属性,没有id属性就是null
*
* @param id
* @return
*/
@Override
public UserEntity queryUserById(String id) {
return userMapper.selectById(id);
}
/**
* 条件查询,可以组合表达示
*
* @return
*/
@Override
public List<UserEntity> queryUserList() {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18)
.le("age", 30);
return userMapper.selectList(queryWrapper);
}
3.2 IServiceCRUD接口使用例子(用到的实体和第二章是实体一致)
总结
开始整合mybatis-plus的时候,都是用回原来那个xml的方法来使用,不是很清楚怎么用它提供API,慢慢研究了一下,就写出一些例子,给自己一个开头,慢慢就会使用,大家有什么好的建议,提出来,一起学习