数据库函数 
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分组后,对同组的列进行拼接 | 
