数据库函数
xbatis 已为你适配了各种数据库,这意味着你可以不用关系具体的数据库
数据库函数使用方法
java
Integer id = QueryChain.of(sysUserMapper)
//方法 1
.select(SysUser::getId, c -> c.sin().as("x_sin"))
.from(SysUser.class)
.eq(SysUser::getId, 2)
//方法 2
.and(SysUser::getCreate_time,c->c.date().eq("2023-12-10"))
//方法 3
.and(queryChain -> {
return queryChain.$(SysUser::getCreate_time).date().eq("2023-12-10");
})
//方法 4
.and(queryChain -> {
return Methods.date(queryChain.$(SysUser::getCreate_time)).eq("2023-12-10");
})
.empty(SysUser::getUserName)
//方法 1
.orderBy(SysUser::getId, c -> c.plus(1))
.returnType(Integer.TYPE)
.get();推荐数据库函数调用方式
java
import static db.sql.api.impl.cmd.Methods.*;
public class Demo {
@Autoware
private SysUserMapper sysUserMapper;
public void test(){
Integer id = QueryChain.of(sysUserMapper)
.select(SysUser::getId, c -> sum(add(c,1)))
//SQL:select sum(c+1)
.returnType(Integer.TYPE)
.get();
}
}简洁,直观,友好一些
数据库函数说明
| 支持的函数 | 函数说明 |
|---|---|
| count | 查询数据总量 |
| sum | 返回指定字段值的和 |
| avg | 返回指定列的平均值 |
| min | 返回指定列的最小值 |
| max | 返回指定列的最大值 |
| abs | 返回绝对值 |
| ceil | 返回大于或等于 x 的最小整数(向上取整) |
| floor | 返回小于或等于 x 的最大整数(向下取整) |
| rand | 返回 0~1 的随机数 |
| sign | 返回 x 的符号,x 是负数、0、正数分别返回 -1、0、1 |
| pi | 返回圆周率 |
| truncate | 返回数值 x 保留到小数点后 y 位的值 |
| round | 返回离 x 最近的整数(四舍五入) |
| pow | 返回 x 的 y 次方 |
| power | 返回 x 的 y 次方 |
| sqrt | 返回 x 的平方根 |
| exp | 返回 e 的 x 次方 |
| mod | 取模 |
| log | 返回自然对数 |
| radians | 将角度转换为弧度 |
| degrees | 将弧度转换为角度 |
| sin | 求正弦值 |
| asin | 求反正弦值 |
| cos | 求余弦值 |
| acos | 求反余弦值 |
| tan | 求正切值 |
| atan | 求反正切值 |
| cot | 求余切值 |
| charLength | 返回字符串 s 的字符数 |
| length | 返回字符串 s 的长度 |
| concat | 字符串拼接 |
| concatWs | 字符串拼接,需要指定分割符 |
| upper | 转大写 |
| lower | 转小写 |
| left | 左截取 |
| right | 截取 |
| lpad | 从左字符串 补全,需要补全的字符和长度 |
| rpad | 从右字符串 补全,需要补全的字符和长度 |
| trim | 去除两边的空格 |
| ltrim | 去除左边的空格 |
| rtrim | 去除右边的空格 |
| repeat | 将字符串 s 重复 n 次 |
| replace | 用字符串 s2 代替字符串 s 中的字符串 s1 |
| strcmp | 比较字符串 s1 和 s2 |
| substring | 获取从字符串 s 中的第 n 个位置开始长度为 len 的字符串 |
| instr | 从字符串 s 中获取 s1 的开始位置 |
| reverse | 将字符串 s 的顺序反过来 |
| field | 返回第一个与字符串 s 匹配的字符串的位置 |
| currentDate | 返回当前日期 |
| currentTime | 返回当前时间 |
| currentDateTime | 返回当前日期和时间 |
| unixTimestamp | 以 UNIX 时间戳的形式返回当前时间 |
| fromUnixTime | 把 UNIX 时间戳的时间转换为普通格式的时间 |
| month | 日期 d 中的月份值,范围是 1~12 |
| weekday | 日期星期几,0 表示星期一,1 表示星期二 |
| year | 返回年 |
| day | 返回日期的天数值 |
| hour | 返回时间 t 中的小时值 |
| dateDiff | 计算日期 d1 到 d2 之间相隔的天数 |
| dateAdd | 日期加操作 |
| dateSub | 日期减操作 |
| inetAton | 将 IP 地址转换为数字表示,IP 值需要加上引号 |
| inetNtoa | 将数字 n 转换成 IP 的形式 |
| sort | 返回传入值的循序值,从1开始,如果不在传入的值里,则返回自己的值 |
mysql函数 - 额外特性函数
使用方式,比通用的函数 前面多个mysql()
select(SysUser::getUserName, c -> c.mysql().jsonExtract("$.obj.title")
| 支持的函数 | 函数说明 |
|---|---|
| findInSet | 返回在字符串 s2 中与 s1 匹配的字符串的位置 |
| md5 | 字符串md5 加密 |
| filed | 指定列值的顺序 |
| fromUnixTime | 将秒转出时间 |
| jsonContains | json是否包含值 |
| jsonContainsPath | json path是否存在 |
| jsonExtract | json提取指定path的值 |
| groupConcat | group分组后,对同组的列进行拼接 |
