BeetlSQL自学文档

BeetlSQL

个人感觉上类同mybatis-Plus,特点在于国人开发、开源

常用注解

@Table

用于实体类与数据库表的映射,但若类名符合命名规范也可不添加(不建议不添加),@Table可以使用表达式的方式来进行声明,实现动态声明

@ Column

用于将属性与数据库表的字段进行映射,同样若符合规范也可不添加

@AutoID

作用于属性字段或者getter方法,告诉beetlsql,这是自增主键,对应于数据自增长(但在实际使用中并未生效)

@AssignID

作用于属性字段或者getter方法,标识该属性值由指定的生成策略自动生成

@RowProvider

启用并指定实现后置映射的类,须传入实现后置映射的class对象

@UpdateIgnore

作用于属性上,当使用内置的更新语句的时候,会忽略此字段

@InsertIgnore

作用于属性上,当使用内置的插入语句的时候,会忽略此字段

@LogicDelete,

逻辑删除注解,在进行deleteById语句 生成更新语句,设置此属性字段为LogicDelete指定的值,但注意,在查询时,BeetlSQL默认不会进行逻辑删除的忽略,需要额外配置,

@Version

作用于属性上,用于乐观锁实现,在更新记录时,会将被该注解标注的属性的值作为过滤条件知以进行更新

@Sql

作用于mapper的方法上,注解需要传入一个Sql语句来作为方法的执行语句,同时语句参数通过?占位

@Update @BatchUpdate

用来修饰@SQL注解,分别表示更新与批量更新,若未使用修饰,则默认未查询语句

@Template

与@SQL作用类似,但语句不再是拼接,占位符变为#{属性名},同时可以与@Param注解配合使用

@SpringData

作用于方法,通过方法名自动生成SQL语句以执行,(不推荐使用)

后置映射

类似于切面的思想?,通过实现RowMapper接口并重写方法,达到在从数据库取出数据并封装为类对象后进行自定义的数据填充

也可实现ResultSetMapper接口来完全进行数据库与对象之间的转换(那我要框架干啥)

混合模型对象

当一个语句查询出的结果对应的是多个表的值时,将结果转换到一个类中,且这个类的属性并未完全对应查询结果时,这时如果想要获得未被映射到的值,可以通过实现Tail接口的方式来声明该对象是混合模型对象,之后便可通过对象.get(“字段名”)的方式获取未被映射的属性值

映射方式配置

可以通过注解加JSON字符串的方式完成数据库与实体类属性关系的映射,通过@JsonMapper指定使用的JSON字符串配置,json字符串的格式为{“实体类属性”,”数据库字段”

进阶的则可以进行属性的子属性映射(套娃),例如这里查询出的u_id与u_name会被认为是实体类属性users的子属性进行转换

若查询语句结果符合一定规范,也可通过@ResultProvider(AutoJsonMapper.class)进行自动转换

自定义属性填充注解

当我们有特殊的业务,需要对数据的出库与入库进行特殊的处理时,我们可以自定义属性注解,当BeetlSQL发现属性上具有注解时,会通过该注解指定的类的方法进行数据的特殊处理,该注解需要通过@Builder注解进行处理类的指定

被声明的处理类需要实现AttributeConvert接口的toDb方法(由实体类插入数据库)和toAttr方法(由数据库转换为对象)来处理属性

toDb方法用于将属性转化为列,pojo指入库的POJO对象,name是指该属性名称,可以调用BeetlSQL3提供的类BeanKit.getBeanProperty获取对象属性值,也可以通过来设置值

BeanKit.setBeanProperty(pojo,now,name);

Query查询

类比于MP的条件查询,持久层通过继承BaseMapper来使用(MP+1)

Query查询的链式方法可以分为两种,结尾方法和条件方法,结尾方法就是最后一个方法,根据方法的不同返回不同的结果,条件方法则是链式调用里面中间部分的方法,负责进行条件过滤,常用的结尾方法有

结尾放啊还有page方法,传入页码以及页长就可以获取到page对象

条件方法

这里有个特别的条件方法condition(),用来与or关联使用的,用来传入到or方法中作为or的另一端条件

QUERY工具类

BeetlSQL中有一个工具类Query类,用以解决查询过程的中的非空验证,他有两个方法filterEmpty、filterNull,其中常用的就是filterEmpty方法,用于判断字符类型、集合,以及其他对象类型的参数是否为空,若为空,则当前所在的条件方法不生效

filterNull仅会判断该值是否为null,不会对String和集合类型的值有特殊判断

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值