MybatisPlus学习笔记(一)之基本使用
简单介绍
MybatisPlus是一个Mybatis的整强工具包。
代码
#创建库
create database mp;
use mp;
#使用表
create table mp(
id int primary key auto_increment,
last_name varchar(50),
email varchar(50),
gender char(1),
age int
);
insert into mp(last_name, email, gender, age) values ('Tom','tom@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('Jerry','Jerry@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('Black','Black@163.com',1,1);
insert into mp(last_name, email, gender, age) values ('White','White@163.com',1,1);
select * from mp;
pom.xml依赖引入
com.baomidou
mybatis-plus-boot-starter
3.5.1
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
mysql mysql-connector-java
application.yml
server: port: 7000 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver password: root url: jdbc:mysql://127.0.0.1:3306/mp?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true username: root
mybatis-plus:
#type-aliases-package: com.monster.demo.entity
global-config:
db-config:
id-type: assign_uuid # 鼠标放在id-type上面显示的解释如下图。
统一CURD的使用
Mapper包XxxMapper.java
/*
* Mapper接口
* 基于Mybatis: 在Mapper接口中编写CRUD相关的方法,提供Mapper接口对应的SQL映射文件以及方法对应的SQL语句
*
* 基于MP: 让XxxMapper接口继承BaseMapper接口即可
* BaseMapper:泛型指定的就是当前Mapper接口所操作的实体类类型
* */
@Mapper
public interface MpMapper extends BaseMapper{
}
实体类Employee层
/*
* 实体类
* MybatisPlus会默认使用实体类的类名到数据库中找对应的表
* */
@Data
@TableName("mp")
public class MpEmployee {
/*
* @TableId
* value: 指定表中的主键列的列明,入股实体属性名与列名一致,可以省略不指定
* type: 指定主键策略
* */
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
@TableField(value = "last_name")
private String lastName;
private String email;
private Integer gender;
private Integer age;
}
Test测试
@SpringBootTest
@Slf4j
class MybatisplusApplicationTests {
@Autowired
private MpMapper mapper;
/*
插入
*/
@Test
void contextLoads() {
//初始化Employee对象
MpEmployee employee = new MpEmployee();
employee.setLastName("张三");
employee.setEmail("张三@163.com");
employee.setGender(1);
employee.setAge(22);
employee.setSalary(20000.0);
//插入到数据库
int insert = mapper.insert(employee);
log.info("insert"+insert);
//获取当前数据在数据库中的主键值
Integer key = employee.getId();
System.out.println("key"+key);
}
}
修改操作测试总结
/*根据id修改*/ @Test void testUpload(){ //初始化Employee对象 MpEmployee employee = new MpEmployee(); employee.setId(1); employee.setLastName("萧瑟"); employee.setEmail("xiao@163.com"); employee.setGender(0); employee.setAge(44); int result = mapper.updateById(employee); System.out.println("修改成功:"+result); }
//根据条件更新修改
@Test
void testUpdate(){
MpEmployee employee = new MpEmployee();
employee.setGender(0);
employee.setAge(20);
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.eq("last_name","张三");
//根据条件做更新匹配lastName="张三"
int update = mapper.update(employee, wrapper);
System.out.println("修改成功:"+update);
}
//根据多个条件更新修改
@Test
void testUpdate(){
MpEmployee employee = new MpEmployee();
employee.setEmail("cs@163.com");
employee.setSalary(10.0);
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.eq("gender",0).eq("age",20);
//根据条件做更新匹配lastName="张三"
int update = mapper.update(employee, wrapper);
System.out.println("修改成功:"+update);
}
删除操作
/* * 根据ID删除 * */ @Test void deleteTest(){ int delete = this.mapper.deleteById(7L); System.out.println("删除成功:"+delete); }
/*
根据map删除数据,多条件之间是and关系
*/
@Test
void testDeleteByMap(){
HashMapmap = new HashMap<>();
map.put("last_name","张三");
map.put("age",20);
int delete = this.mapper.deleteByMap(map);
System.out.println("删除成功:"+delete);
}
/*
删除方法
*/
@Test
void testDelete(){
//用法一
// QueryWrapperwrapper = new QueryWrapper<>();
// wrapper.eq("last_name","张三")
// .eq("age",22);
//用法二
MpEmployee employee = new MpEmployee();
employee.setLastName("张三");
employee.setAge(20);
QueryWrapperwrapper = new QueryWrapper<>(employee);
//根据包装条件做条件
int delete = this.mapper.delete(wrapper);
System.out.println("删除成功:"+delete);
}
/*
* 批量删除
* */
@Test
void testDeleteBatchIds(){
this.mapper.deleteBatchIds(Arrays.asList(8L,9L,10L));
}
查询
/* * 通用 查询操作 * */
@Test
void testSelectById(){
MpEmployee select = this.mapper.selectById(1L);
System.out.println("查询成功:"+select);
}
/* * 通用 查询多个操作 * */
@Test
void testSelectBatchIds(){
Listemployees = this.mapper.selectBatchIds(Arrays.asList(2L, 3L, 4L));
for (MpEmployee employee : employees) {
System.out.println(employee);
}
}
/*
根据条件查询一个
*/
@Test
void testSelectOne(){
QueryWrapperwrapper = new QueryWrapper<>();
//查询条件
wrapper.eq("last_name","张三");
MpEmployee employee = this.mapper.selectOne(wrapper);
System.out.println(employee);
}
/*查询统计*/
@Test
void testSelectCount(){
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.gt("age",10);//年龄大于20岁的用户
//根据用户查询条数
Long count = this.mapper.selectCount(wrapper);
System.out.println("查询条件:"+count);
}
/*查询多个*/
@Test
void testSelectList(){
QueryWrapperwrapper = new QueryWrapper<>();
//设置查询条件
wrapper.like("email","xiao@163.com");
Listlist = this.mapper.selectList(wrapper);
for (MpEmployee mpEmployee : list) {
System.out.println(mpEmployee);
}
}