直接看官方文档
https://baomidou.gitee.io/mybatis-plus-doc/#/
环境配置
https://blog.csdn.net/suzhou_xj/article/details/103956422
Mybatis-plus
1.实体类
@Data
@TableName(value = "tb_employee")//指定表名
public class Employee {
//value与数据库主键列名一致,若实体类属性名与表主键列名一致可省略value
@TableId(value = "id",type = IdType.AUTO)//指定自增策略
private Integer id;
//若没有开启驼峰命名,或者表中列名不符合驼峰规则,可通过该注解指定数据库表中的列名,exist标明数据表中有没有对应列
@TableField(value = "last_name",exist = true)
private String lastName;
private String email;
private Integer gender;
private Integer age;
}
2.Mapper
Mapper接口继承BaseMapper
public interface EmplopyeeDao extends BaseMapper<Employee> {
}
3.测试连接
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:mapper/xxxMapper.xml"})
public class test {
@Autowired
private DataSource dataSource;
@Test
public void testDataSource() throws SQLException {
System.out.println(dataSource.getConnection());
}
}
4.CRUD操作
Insert,直接调用insert方法
public class test {
//注入Mapper
@Autowired
private EmplopyeeMapper emplopyeeMapper;
@Test
public void testInsert(){
//定义实例
Employee employee = new Employee();
employee.setLastName("东方不败");
employee.setEmail("dfbb@163.com");
employee.setGender(1);
employee.setAge(20);
//mybatisplus会自动把当前插入对象在数据库中的id写回到该实体中
emplopyeeMapper.insert(employee);
}
}
可以看到只有一个insert方法
update操作,调用updateById
@Test
public void testUpdate(){
Employee employee = new Employee();
employee.setId(1);
employee.setLastName("更新测试");
emplopyeeDao.updateById(employee);//根据id进行更新,没有传值的属性就不会更新
}
一个条件查询,一个id查询
Select操作,调用selectOne调用单个
QueryWrapper<Employee> queryWrapper = new QueryWrapper<Employee>();
queryWrapper.eq("id",1);
Employee employeeitemCatMapper.selectOne(queryWrapper);
select的核心就是QueryWrapper条件设置
有多种方法
Select批量根据id查询
List<Integer> idList = new ArrayList<>();
idList.add(1);
idList.add(2);
idList.add(3);
List<Employee> employees = emplopyeeDao.selectBatchIds(idList);
System.out.println(employees);
QueryWrapper条件查询List,可以为null,即查询所有
QueryWrapper<Emp> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
//查询根据id
Lsit<Emp> emp = EmpeeMpper.selectList(queryWrapper);
//查询所有
Lsit<Emp> emp = EmpeeMpper.selectList(queryWrapper);
5.常用注解(实体类)
注解名称 | 说明 |
@TableName | 实体类的类名和数据库表名不一致 |
@TableId | 实体类的主键名称和表中主键名称不一致 |
@TableField | 实体类中的成员名称和表中字段名称不一致 |
6.排除实体类中非表字段
-
使用
transient
关键字修饰非表字段,但是被transient
修饰后,无法进行序列化。 -
使用
static
关键字,因为我们使用的是lombok框架生成的get/set方法,所以对于静态变量,我们需要手动生成get/set方法。 -
使用
@TableField(exist = false)
注解
7.全部的yml配置
mybatis-plus:
mapper-locations: mapper/*.xml
global-config:
db-config:
# 主键策略
id-type: auto
# 表名前缀
table-prefix: t
# 表名是否使用下划线间隔,默认:是
table-underline: true
# 添加mybatis配置文件路径
config-location: mybatis-config.xml
# 配置实体类包地址
type-aliases-package: org.ywb.demo.pojo
# 驼峰转下划线
configuration:
map-underscore-to-camel-case: true