MP开发环境
spring框架中整合mp
配置pom
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
配置yml信息
# mp只做增强,配置时加plus即可
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
#添加日志
logging:
level:
com.jt.mapper: debug
pojo层配置
常用的注解
注释 | 参数 | 作用 | 例子 |
---|---|---|---|
@TableName() | String表名 | 注释表名 | @TableName() |
@TableId | IdType | 主键注解 | @TableId(type = IdType.AUTO) |
@TableField | String字段名 | 字段注解(非主键) | @TableField(“name”) |
mapper层配置
-
使用ibatis注解 @Mapper 为接口创建了反射机制的一个对象, 交给jdk动态代理
-
mapper类继承BaseMapper<T> 接口 ,使用父类的CRUD操作
-
自定义方法不能和继承方法重名
业务操作
条件构造器
- QueryWrapper<T>(T entity)
- 内部属性 entity 也用于生成 where 条件
转译字符
- eq 等于 =
- ne 不等于 <>
- gt 大于 >
- ge 大于等于 >=
- lt 小于 <
- le 小于等于 <=
- or 拼接两个条件,不调用or则默认为使用and连接
/* 需求 查询 年龄为18或者 男性*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18)
.or()
.eq("sex", "男");
//Preparing: SELECT id,name,age,sex FROM demo_user WHERE (age > ? OR sex = ?)
List<User> userList = userMapper.selectList(queryWrapper);
- like “%值%” 包含值
- likeLeft “值%” 以值开头
- likeright “%值” 以值结尾
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.likeLeft("name","值" ) = %值 以值结尾
// queryWrapper.likeRight("name","值" ) = 值% 以值开头
queryWrapper.like("name", "值")
.orderByDesc("age");
List<User> userList = userMapper.selectList(queryWrapper);
- in 如果遇到多值传参,一般采用对象的方式封装数据
Integer[] ids = {1, 3, 6, 7};
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("id", ids);
// SELECT id,name,age,sex FROM demo_user WHERE (id IN (?,?,?,?))
List<User> userList = userMapper.selectList(queryWrapper);
- isNull 查询为null的数据
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.isNull("name");
//根据对象中不为null的属性 拼接where条件
List<User> userList = userMapper.selectList(queryWrapper);
动态sql查询
/**
* MP实现动态查询:
* 参数1: condition boolean类型数据 true 拼接条件
* false 不拼接条件
* 参数2: 字段名称
* 参数3: 字段值
*/
public void select() {
Integer age = 18;
String sex = "男";
//boolean flag = sex != null && sex.length()>0;
//条件判断
boolean flag = StringUtils.hasLength(sex);//spring提供的小工具 代替上部分代码
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt(age > 0, "age", age)
.eq(flag, "sex", sex);
//根据对象中不为null的属性 拼接where条件
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);
}
常用方法
1. 增
int insert(T entity);
2. 删
int delete(@Param(“ew”) Wrapper queryWrapper);
3. 改
int update(@Param(“et”) T entity, @Param(“ew”) Wrapper updateWrapper);
4. 查
- T selectById(Serializable id);
根据id 查找
User user = userMapper.selectById(23);
- T selectOne(@Param(“ew”) Wrapper queryWrapper);
查找结果为1项
user.setName("张三").setSex("男");
//将对象属性不为null的值, 拼接where条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
User user = userMapper.selectOne(queryWrapper);
- List selectList(@Param(“ew”) Wrapper queryWrapper);
查找结果为多项 - List<Map<String, Object>> selectMaps(@Param(“ew”) Wrapper queryWrapper);
查询部分结果
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.select("name", "age");
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);//方法返回值 List< Map<String, Object>>
- List selectObjs(@Param(“ew”) Wrapper queryWrapper);
只要求返回第一列的数据
List<Object> list = userMapper.selectObjs(null);
MyBatis-Plus参考手册 ttps://mp.baomidou.com/guide/#特性