1. 实体类注解
#非库表字段注解: @TableField(exist = false)
#库表主键注解: @TableId(value = "ID", type = IdType.AUTO)
数据类型:package org.apache.ibatis.type
package org.apache.ibatis.type;
import java.util.HashMap;
import java.util.Map;
public enum JdbcType {
ARRAY(2003),
BIT(-7),
TINYINT(-6),
SMALLINT(5),
INTEGER(4),
BIGINT(-5),
FLOAT(6),
REAL(7),
DOUBLE(8),
NUMERIC(2),
DECIMAL(3),
CHAR(1),
VARCHAR(12),
LONGVARCHAR(-1),
DATE(91),
TIME(92),
TIMESTAMP(93),
BINARY(-2),
VARBINARY(-3),
LONGVARBINARY(-4),
NULL(0),
OTHER(1111),
BLOB(2004),
CLOB(2005),
BOOLEAN(16),
CURSOR(-10),
UNDEFINED(-2147482648),
NVARCHAR(-9),
NCHAR(-15),
NCLOB(2011),
STRUCT(2002),
JAVA_OBJECT(2000),
DISTINCT(2001),
REF(2006),
DATALINK(70),
ROWID(-8),
LONGNVARCHAR(-16),
SQLXML(2009),
DATETIMEOFFSET(-155),
TIME_WITH_TIMEZONE(2013),
TIMESTAMP_WITH_TIMEZONE(2014);
2. 查询
2.1 LambdaQueryWrapper 的查询
public ResponseInfo pagelist(DeviceTypeSerialPageParam param, boolean b) { LambdaQueryWrapper<AdmDevTypeSerial> wrapper = Wrappers.lambdaQuery(AdmDevTypeSerial.class) .select( AdmDevTypeSerial::getId, AdmDevTypeSerial::getDeviceCategory, AdmDevTypeSerial::getDeviceType, AdmDevTypeSerial::getDeviceSN, AdmDevTypeSerial::getExpireTime ); if (StringUtils.isNotEmpty(param.getDeviceSN())) { wrapper.like(AdmDevTypeSerial::getDeviceSN, param.getDeviceSN()); } // 设置分页 Page<AdmDevTypeSerial> page = new Page<>(); page.setSize(param.getPageSize()); page.setCurrent(param.getPageNum()); admDevTypeSerialMapper.selectPage(page, wrapper); return ResponseUtil.build(ReturnCode.Success, page); }
Wrapper<PersonRelativeEntity> wrapper = new EntityWrapper<PersonRelativeEntity>() .eq(Objects.nonNull(personId), "PERSON_ID", personId) .eq(Objects.nonNull(relativeId), "RELATIVE_ID", relativeId) .eq(Objects.nonNull(relativeType), "TYPE", relativeType) .in(CollectionUtils.isNotEmpty(relativeIds), "RELATIVE_ID", relativeIds);
2.2 构建查询条件,创建LambdaQueryWrapper对象
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
eq,等于: wrapper.eq(User::getName, "张三");
ne,不等于: wrapper.ne(User::getAge, 18); 等价于SQL语句: SELECT * FROM user WHERE age <> 18;
gt,大于: wrapper.gt(User::getAge, 18);
ge,大于等于: wrapper.ge(User::getAge, 18);
lt,小于: wrapper.lt(User::getAge, 18);
le,小于等于: wrapper.le(User::getAge, 18);
like,模糊 wrapper.like(User::getName, "张%");
in,查询 List<String> names = Arrays.asList("张三", "李四", "王五");
wrapper.in(User::getName, names);
2.3 组合查询条件,LambdaQueryWrapper支持多个查询条件的组合,常用的有以下几种
(1)and方法:AND组合查询条件
wrapper.eq(User::getName, "张三").and(wrapper1 -> wrapper1.gt(User::getAge, 18));
(2)or方法:OR组合查询条件
wrapper.eq(User::getName, "张三").or(wrapper1 -> wrapper1.gt(User::getAge, 18));
2.4 排序和分页
(1)升序orderByAsc wrapper.orderByAsc(User::getAge);
(2)降序orderByDesc wrapper.orderByDesc(User::getAge);
(3)last方法:在查询语句的最后面添加SQL语句 wrapper.last("LIMIT 10");
(4)page方法:分页查询
Page<User> page = new Page<>(1, 10);
wrapper.eq(User::getName, "张三").page(page);
2.5 xml规范
AND ALARM_LOCATION LIKE CONCAT('%',#{alarmSourceCodeLike}, '%')
3. 更新语句
3.1 包装类sql 更新
Wrapper<ChannelPerson> queryWrapper = new EntityWrapper<>();
.updateForSet("hits=hits+1", new EntityWrapper<T>().eq("id", id));