# 更新日志
# 1.20.0(2025-11-30)
- 动态查询增加函数查询列。
- 实体类增加函数属性定义。
# 1.19.x(2025-04-14)
- 增加动态创建动态Mapper。
- 一些优化与修复。
# 1.18.x(2024-05-05)
- 增加通用查询:batchMerge
- 增加通用查询:countDistinctByLambdaCriteria
- baseService增加saveOrUpdate
- StatisticPredicate增加countDistinct方法
- 删除过期的通用查询
# 1.17.1(2024-02-17)
- 动态查询支持exists子查询条件
- 增加支持springboot3的starter
- 优化功能逻辑
# 1.16.2(2023-11-12)
- 修正Conditions类中lambda函数式方法。
- 字段别名永远使用引号,以解决oracle下可能无法进行字段映射的问题。
- 修正基础条件组合时构建的sql不正确问题。
- 修正转换通用查询方法时,强制加载未完成的xml配置问题(加载时机不合适引起某些问题)。
- 升级部分依赖。
# 1.16.1(2023-08-19)
- 插入数据时,如果逻辑删除属性(@LogicDelete声明)的值为null时,将自动设置属性值为@LogicDelete中resumeValue的值,可通过autoFill=<true/false>进行开启或关闭,默认为开启。
- 修复criteria查询中使用orP方法指定查询条件时,OR条件被渲染为AND条件的问题。
# 1.16.0(2023-07-24)
- 增加空值排序设定。Sort构造及Predicate中的order方法
- 增加基础查询方法:updatePatchById、updatePatchByIds、updatePatchByCriteria、updatePatchByLambdaCriteria,用法查看BaseMapper方法注释
- 增加全文搜索条件查询。Predicate中fulltext方法。
# 1.15.0(2023-07-11)
新增:
- 增加findByCriteriaUnion、findByLambdaCriteriaUnion基础接口
- QueryPredicate增加limitOffset分页函数
- 增加自动设置字段的jdbcType功能
默认开启,可通过自动配置参数mybatis.autoSetupColumnJdbcType=<Boolean>进行设置。
自定义配置时可通过MiluConfiguration实例.setAutoSetupColumnJdbcType(Boolean)进行设置。
此举为避免更新字段为null值时某些数据库不能识别mybatis的默认jdbcType的而引起的问题。
修正:
- 修正example转criteria:将引用属性忽略
# 1.14.0 (2023-06-24)
新增功能
- 增加对
@Table注解中catalog设置的支持(sqlserver应用)。 - criteria查询中,in/notIn条件,支持集合及数组之外的对象,具体请查看接口方法说明。
- 增加example条件转criteria条件方法,具体查看readme文档说明。
优化修复
- 修正criteria查询条件中,实体类属性设置了typeHandler但在值作为查询条件时此设置不起效问题。
- 修正PostgreSQL的正则查询条件。
- 修正Oracle与PostgreSQL的批量插入中,对实体类复杂属性缺失的问题。
- 修正单统计方法(sumByLambdaCriteria等)在oracle下查询异常问题
# 1.13.0 (2023-05-28)
- 增加单统计方法:maxByLambdaCriteria、minByLambdaCriteria、sumByLambdaCriteria。
- findAll、countByExample自动过滤已逻辑删除数据。
- 增加参数
createEntityResultMap(MiluConfiguration.createEntityResultMap),可通过自动配置参数mybatis.createEntityResultMap进行设置,开启自动创建实体类对应的ResultMap。 此为解决通过@EnableEntityGenericResultMap注解开启自动创建实体类对应的ResultMap只能在自动化配置中生效的问题。 - 修正UpdateAttrByCriteria的sqlTemplate缓存问题。
# 1.12.0 (2023-05-14)
- Exmaple查询自动添加查询未逻辑删除数据的条件。
@EntityOptions增加filterLogicDeletedData配置,可以为实体(Exmaple查询)关闭自动过滤已逻辑删除数据。- 自动生成实体ResultMap(通过
@EnableEntityGenericResultMap启用)由扫描@Mapper声明的类改为扫描BaseMapper子类。 - 自动生成实体ResultMap增加对
@MapperScans注解的支持(指定的扫描路径(包))。
# 1.11.0 (2023-04-14)
- 增加
@EntityOptions与@FetchRef注解,以增强Example查询的响应结果配置,由原只返回主实体,现可以配置同时返回哪些关联的实体。 - 重命名部分基础查询方法:BaseMapper标记findAllAndSort为过时,由findAll方法重载进行替代;findByExampleAndSort过时,替换为findByExample的方法重载;findUniqueByExampleAndSort方法过时,替换为findUniqueByExample方法重载。BaseService跟随BaseMapper调整方法命名。
@ExampleQuery注解现可直接应用在实体属性上。- 解决关联查询在某情况下join条件丢失问题。
# 1.10.0 (2023-02-21)
- 增加批量更新、批量新增 BaseService中增加baseSave、batchUpdateById、batchUpdateByLambdaCriteria方法
- criteria增加排序方法重载 criteria查询中增加方法order(Sort sort)
# 1.9.2 (2022-12-10)
- 解决v1.8.0中支持实体schema声明,在NamingQuery中未支持问题。
- Example查询的查询参数支持TypeHandle处理。
尚存在的问题:目前Criteria查询的查询参数未能支持TypeHandle处理,但由于Criteria查询的自由度大,如有需要可自行进行类型转换。
# 1.9.0 (2022-11-26)
- 增加对配置占位符的支持
@Table(schema="${someDbSchemaName}")
实现接口PlaceholderResolver并设置到MiluConfiguration对象中 在SpringBoot环境中,已实现了SpringPlaceholderResolver并自动配置,可以直接使用SpEL进行占位符定义。 2. 增加Criteria查询的groupByAs动态查询条件,为分组字段指定别名 3. 修复批量插入中,自设主键时(非通过IdentifierGenerator),无法插入设定主键问题。
# 1.8.0 (2022-09-18)
- @Table注解的schema参数支持;
@Table(schema="db")
public class SomeEntity {
}
// SELECT * FROM db.some_entity
- 增加Criteria查询中对逻辑删除状态查询条件。
someMapper.findByCriteria(p -> p.undeleted());
someMapper.findByCriteria(p -> p.deleted());
# 1.7.1 (2022-07-23)
- 修复批量插入时,自增主键值未能回写到实体的问题
# 1.7.0 (2022-06-13)
实体关系支持多字段关联
- 支持
@JoinColumns注解。在一对多、多对一、一对一关系中多字段关联。 - 支持
@JoinTable中joinColumns与inverseJoinColumns属性中@JoinColumn数组多个元素。在多对多关系中多字段关联。
# 1.6.1 (2022-05-28)
- 修正Criteria查询中使用多个排序字段时可能存在顺序不正确的问题
- 优化Sort的创建,支持级联操作。
# 1.6.0 (2022-05-01)
新特性
- 增加逻辑删除通用接口
- logicDeleteById
- logicDeleteByIds
- logicDeleteByCriteria
- logicDeleteByLambdaCriteria
- resumeLogicDeleteById
- resumeLogicDeleteByIds
- resumeLogicDeleteByCriteria
- resumeLogicDeleteByLambdaCriteria
优化与修复
- 修正乐观锁值会被重置的问题
- 优化自动化配置
# 1.5.0 (2022-03-21)
新特性:
- 增加Example查询与Criteria查询返回唯一数据的接口。
- T findUniqueByExample
- T findUniqueByExampleAndSort
- T findUniqueByCriteria
- T findUniqueByLambdaCriteria
修复:
- 修正短注解中声明的@Column无效问题
# 1.4.3 (2022-02-27)
- 删除criteria/LambdaPredicateImpl中between方法中多余的判断,避免报异常
# 1.4.2 (2022-01-24)
- 修正关联实体的结果集映射在某些情况下丢失的问题
- 增加对空的条件集合的判断,避免此空集条件引起的生成SQL异常。
- 修正Criteria查询中neq条件表达式不正确的问题。
# 1.4.0 (2021-12-27)
新特性
- Criteria查询新增联结模式支持
//指定所有联结
studentMapper.findByCriteria(p -> p.selects("*, classs*").joinMode(JoinMode.LEFT_JOIN))
//sql:SELECT ... FROM `student` a LEFT JOIN `class` b ON (a.`classId` = b.`id`)
//指定关联实体的联结方式
studentMapper.findByCriteria(p -> p.selects("*, classs*").joinMode("classs", JoinMode.LEFT_JOIN))
- Lambda查询增加条件方法
andP(Consumer<Predicate> predicate);
orP(Consumer<Predicate> predicate);
notP(Consumer<Predicate> predicate);
# 1.3.2 (2021-11-30)
v1.3.2+v1.3.1
1、@Filler注解增加fillMode参数,设置自动填充的场景
原是只有属性值为null时才会调用supplier获得值进行填充,现在可以设置fillMode=FillMode.ANY,属性有没值都会被填充
2、使用实体类的子类插入、更新时,也可以自动填充了
3、Criteria查询增加distinct方法,查询去重
findByCriteria(p -> p.distinct())
4、对Criteria查询的isNull、notNull方法重载,增加accept入参方法,判断条件是否可以应用
findByCriteria(p -> p.isNull(true/false, "userName"))
# 1.3.0 (2021-10-28)
- criteria查询支持直接查询关联实体
//查询关联实体所有数据
List<Classs> list = classMapper.findByCriteria(p -> p.select("*","studentList*").eq("id", 1L));
//结果:{"id": 1, "name":"一年级",..., studentList: [{"id": 1, "name":"张三", ...},{"id": 2, "name":"李四", ...}]}
//查询关联实体部分属性
List<Classs> list = classMapper.findByCriteria(p -> p.select("*","studentListId", "studentListName").eq("id", 1L));
- 增加updateAttrByCriteria通用查询接口,更新实体单个属性
//更新学生名为王二柱
int effect = studentMapper.updateAttrByCriteria("name", "王二柱", p -> p.eq('id', 1L))
//或使用LambdaCriteria模式
int effect = studentMapper.updateAttrByLambdaCriteria(Student::getName, "王二柱", p -> p.eq(Student::getId, 1L))
# 1.2.0 (2021-10-07)
增加自定义短配置注解功能 使用
@SnowflakeId注解在主键上,将会在insert时自动使用snowflakeId实现 使用@CreateTime注解在日期属性上,将会在insert时自动使用当前日期 这些注解相当于一个配置别名,开发者可以自定义自己的别名使用。内置的别名注解及自定义方式见readme文档。typeHandler声明支持 现在可在
@AttributeOptions上声明字段typeHandler以及jdbcType
# 1.1.1 (2021-08-29)
- Example查询现可以直接使用Pageable参数进行分页。
- 查询创建器(命名式查询)现可以直接在任意参数位置加入Pageable参数进行分页。
- Criteria查询现可以.limit(Pageable page)进行分页。
# 1.1.0 (2021-07-27)
增加通用统计查询接口,增加统计查询创建器
# 1.0.2 (2021-05-06)
增加查询时获取悲观写/读锁功能
# 1.0.1 (2021-04-28)
修复:
- 修复获取table序列未关闭Executor问题。 新增:
- Example查询功能增强,增加范围查询与In查询条件。
- Criteria查询增加正则匹配条件。
- 现可通过参数设置是否对标识符(表名、字段名)使用引号,默认为使用。
← 开发参考