企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 模型其他注解 * @UpdateIgnore 作用于属性上,当使用内置的更新语句的时候,会忽略此字段 * @InsertIgnore 作用于属性上,当使用内置的插入语句的时候,会忽略此字段 * @LogicDelete,作用在属性上,告诉BeetlSQL,deleteById语句 生成更新语句,并设置此属性字段为LogicDelete指定的值 ```java @Data @Table(name="sys_user") public class SysUser{ @AutoId Integer id; String name; @LogicDelete(1) Integer flag; } ``` 逻辑删除改变了deleteById的sql,但对于其他内置查询,没有把逻辑删除作为过滤条件,依然能查询出来。这点不同于mybatis-plus。如果需要过滤,请参考扩展BeetlSQL3 > beetlsql 认为逻辑删除依然是业务的一部分,不应该干涉 * @Version 注解@Version作用在类型为int,long的属性或者getter方法上,用于乐观锁实现。 ~~~java public class Credit implements Serializable{ private Integer id ; private Integer balance ; @Version private Integer version ; ~~~ 当调用内置的updateById,或者updateTemlateById的时候,被@Version注解的字段将作为where条件的一部分 ~~~ ┏━━━━━ Debug [credit._gen_updateTemplateById] ━━━ ┣ SQL: update `credit` set `balance`=?, `version`=`version`+1 where `id` = ? and `version` = ? ┣ 参数: [15, 1, 5] ┣ 位置: org.beetl.sql.test.QuickTest.main(QuickTest.java:38) ┣ 时间: 4ms ┣ 更新: [1] ┗━━━━━ Debug [credit._gen_updateTemplateById] ━━━ ~~~ * @Auto 标识此列是一个自增列 ``` @Column("number"); @Auto private Long number ``` * @Seq 标识此列是按数据库序列赋值 ```java @Column("number"); @Seq("xxx_seq") private Long number ``` * @View注解 (不常用,未来将取消) 在BeetlSQL内置查询语句里,返回的结果集是POJO和列的交集,使用@View注解,可以进一步限定内置SQL语句需要返回的列 如下MyUser对象,有三个字段,id和name,以及photo。当sqlManager发起内置的查询的时候,这三个字段都会返回结果集,如果你想在某些查询下排除photo字段,可以使用@View ```java @Data @Table(name="user") public class MyUser { static interface Simple{} static interface Complex{} @AssignID @View(Simple.class,Complex.class) private Integer id; @View(Simple.class) private String name; @View(Complex.class) private byte[] photo; } ``` 如上name属性,当view是Simple.class的时候将返回,photo属性则只在view是Complex.class的返回。 id则总是返回。 SQLManager.viewType指定此次查询的view,如下指定Simple ```java MyUser cacheItem = SQLManager.viewType(MyUser.Simple).single(MyUser.class,1) ``` 如下指定Complex ```java MyUser userWithPohot = SQLManager.viewType(MyUser.Complex).single(MyUser.class,1) ```