1:查询构建器的区别
1)QueryWrapper 使用的是数据库的字段名
例如:
wrapperApply.select("DISTINCT user_id,nick_name"); wrapperApply.in("part_unit_id", partunitIds);
直接使用写死“列名”方式,容易因拼写错误导致异常,当字段名称发生改变,导致额外更多检查和修改工作。如有错误,运行时报错。或者需要封装查询类的对象,增加代码量
2)LambdaQueryWrapper 使用的是Lambda语法
例如:
lambdaQueryWrapper.eq(BizWoPartUnitUser::getUserId, userId); lambdaQueryWrapper.select(BizWoPartUnitUser::getProjectId);
LambdaQueryWrapper 使用lambda表达式,如有错误,编译期就会报错;灵活。
2:拼接sql以及FIND_IN_SET的用法
用apply拼接对应的sql,值与数据库中以逗号分隔存储的值列表进行匹配时,可以使用FIND_IN_SET
函数
例如:
lambdaQueryWrapper.apply("FIND_IN_SET ( '" + roleId + "',role_ids )");