# 更新日志

# 1.20.0(2025-11-30)

  1. 动态查询增加函数查询列。
  2. 实体类增加函数属性定义。

# 1.19.x(2025-04-14)

  1. 增加动态创建动态Mapper。
  2. 一些优化与修复。

# 1.18.x(2024-05-05)

  1. 增加通用查询:batchMerge
  2. 增加通用查询:countDistinctByLambdaCriteria
  3. baseService增加saveOrUpdate
  4. StatisticPredicate增加countDistinct方法
  5. 删除过期的通用查询

# 1.17.1(2024-02-17)

  1. 动态查询支持exists子查询条件
  2. 增加支持springboot3的starter
  3. 优化功能逻辑

# 1.16.2(2023-11-12)

  1. 修正Conditions类中lambda函数式方法。
  2. 字段别名永远使用引号,以解决oracle下可能无法进行字段映射的问题。
  3. 修正基础条件组合时构建的sql不正确问题。
  4. 修正转换通用查询方法时,强制加载未完成的xml配置问题(加载时机不合适引起某些问题)。
  5. 升级部分依赖。

# 1.16.1(2023-08-19)

  1. 插入数据时,如果逻辑删除属性(@LogicDelete声明)的值为null时,将自动设置属性值为@LogicDelete中resumeValue的值,可通过autoFill=<true/false>进行开启或关闭,默认为开启。
  2. 修复criteria查询中使用orP方法指定查询条件时,OR条件被渲染为AND条件的问题。

# 1.16.0(2023-07-24)

  1. 增加空值排序设定。Sort构造及Predicate中的order方法
  2. 增加基础查询方法:updatePatchById、updatePatchByIds、updatePatchByCriteria、updatePatchByLambdaCriteria,用法查看BaseMapper方法注释
  3. 增加全文搜索条件查询。Predicate中fulltext方法。

# 1.15.0(2023-07-11)

新增:

  1. 增加findByCriteriaUnion、findByLambdaCriteriaUnion基础接口
  2. QueryPredicate增加limitOffset分页函数
  3. 增加自动设置字段的jdbcType功能
    默认开启,可通过自动配置参数mybatis.autoSetupColumnJdbcType=<Boolean>进行设置。
    自定义配置时可通过MiluConfiguration实例.setAutoSetupColumnJdbcType(Boolean)进行设置。
    此举为避免更新字段为null值时某些数据库不能识别mybatis的默认jdbcType的而引起的问题。

修正:

  1. 修正example转criteria:将引用属性忽略

# 1.14.0 (2023-06-24)

新增功能

  1. 增加对@Table注解中catalog设置的支持(sqlserver应用)。
  2. criteria查询中,in/notIn条件,支持集合及数组之外的对象,具体请查看接口方法说明。
  3. 增加example条件转criteria条件方法,具体查看readme文档说明。

优化修复

  1. 修正criteria查询条件中,实体类属性设置了typeHandler但在值作为查询条件时此设置不起效问题。
  2. 修正PostgreSQL的正则查询条件。
  3. 修正Oracle与PostgreSQL的批量插入中,对实体类复杂属性缺失的问题。
  4. 修正单统计方法(sumByLambdaCriteria等)在oracle下查询异常问题

# 1.13.0 (2023-05-28)

  1. 增加单统计方法:maxByLambdaCriteria、minByLambdaCriteria、sumByLambdaCriteria。
  2. findAll、countByExample自动过滤已逻辑删除数据。
  3. 增加参数createEntityResultMap(MiluConfiguration.createEntityResultMap),可通过自动配置参数mybatis.createEntityResultMap进行设置,开启自动创建实体类对应的ResultMap。 此为解决通过@EnableEntityGenericResultMap注解开启自动创建实体类对应的ResultMap只能在自动化配置中生效的问题。
  4. 修正UpdateAttrByCriteria的sqlTemplate缓存问题。

# 1.12.0 (2023-05-14)

  1. Exmaple查询自动添加查询未逻辑删除数据的条件。
  2. @EntityOptions增加filterLogicDeletedData配置,可以为实体(Exmaple查询)关闭自动过滤已逻辑删除数据。
  3. 自动生成实体ResultMap(通过@EnableEntityGenericResultMap启用)由扫描@Mapper声明的类改为扫描BaseMapper子类。
  4. 自动生成实体ResultMap增加对@MapperScans注解的支持(指定的扫描路径(包))。

# 1.11.0 (2023-04-14)

  1. 增加@EntityOptions@FetchRef注解,以增强Example查询的响应结果配置,由原只返回主实体,现可以配置同时返回哪些关联的实体。
  2. 重命名部分基础查询方法:BaseMapper标记findAllAndSort为过时,由findAll方法重载进行替代;findByExampleAndSort过时,替换为findByExample的方法重载;findUniqueByExampleAndSort方法过时,替换为findUniqueByExample方法重载。BaseService跟随BaseMapper调整方法命名。
  3. @ExampleQuery注解现可直接应用在实体属性上。
  4. 解决关联查询在某情况下join条件丢失问题。

# 1.10.0 (2023-02-21)

  1. 增加批量更新、批量新增 BaseService中增加baseSave、batchUpdateById、batchUpdateByLambdaCriteria方法
  2. criteria增加排序方法重载 criteria查询中增加方法order(Sort sort)

# 1.9.2 (2022-12-10)

  1. 解决v1.8.0中支持实体schema声明,在NamingQuery中未支持问题。
  2. Example查询的查询参数支持TypeHandle处理。

尚存在的问题:目前Criteria查询的查询参数未能支持TypeHandle处理,但由于Criteria查询的自由度大,如有需要可自行进行类型转换。

# 1.9.0 (2022-11-26)

  1. 增加对配置占位符的支持
@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)

实体关系支持多字段关联

  1. 支持@JoinColumns注解。在一对多、多对一、一对一关系中多字段关联。
  2. 支持@JoinTable中joinColumns与inverseJoinColumns属性中@JoinColumn数组多个元素。在多对多关系中多字段关联。

# 1.6.1 (2022-05-28)

  1. 修正Criteria查询中使用多个排序字段时可能存在顺序不正确的问题
  2. 优化Sort的创建,支持级联操作。

# 1.6.0 (2022-05-01)

新特性

  • 增加逻辑删除通用接口
    • logicDeleteById
    • logicDeleteByIds
    • logicDeleteByCriteria
    • logicDeleteByLambdaCriteria
    • resumeLogicDeleteById
    • resumeLogicDeleteByIds
    • resumeLogicDeleteByCriteria
    • resumeLogicDeleteByLambdaCriteria

优化与修复

  • 修正乐观锁值会被重置的问题
  • 优化自动化配置

# 1.5.0 (2022-03-21)

新特性:

  1. 增加Example查询与Criteria查询返回唯一数据的接口。
    • T findUniqueByExample
    • T findUniqueByExampleAndSort
    • T findUniqueByCriteria
    • T findUniqueByLambdaCriteria

修复:

  1. 修正短注解中声明的@Column无效问题

# 1.4.3 (2022-02-27)

  1. 删除criteria/LambdaPredicateImpl中between方法中多余的判断,避免报异常

# 1.4.2 (2022-01-24)

  1. 修正关联实体的结果集映射在某些情况下丢失的问题
  2. 增加对空的条件集合的判断,避免此空集条件引起的生成SQL异常。
  3. 修正Criteria查询中neq条件表达式不正确的问题。

# 1.4.0 (2021-12-27)

新特性

  1. 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))
  1. 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)

  1. 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));
  1. 增加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)

修复:

  1. 修复获取table序列未关闭Executor问题。 新增:
  2. Example查询功能增强,增加范围查询与In查询条件。
  3. Criteria查询增加正则匹配条件。
  4. 现可通过参数设置是否对标识符(表名、字段名)使用引号,默认为使用。