mybatis-plus问题解决


问题:先以字母排序然后以数字排序,排序后的效果如:a a1 a2 b b1 b2 c1 c2

解决:

SELECT * FROM "t_room" ORDER BY 
cast(floor AS DECIMAL),
SUBSTRING(layer FROM '^(.*?)(\\d+)?$'), 
COALESCE(SUBSTRING(layer FROM ' (\\d+)$')::INTEGER, 0)

问题:数据库是字符串类型,进行范围比较大小

解决:

DATE_FORMAT(T.CREATE_TIME,'%Y-%m-%d') BETWEEN #{startTime} and #{endTime}

问题:mybatis-plus 的 QueryWrapper 中使用 where 语句

解决:

Page queryPage=new Page<>(page,limit);
QueryWrapper queryWrapper=new QueryWrapper<>();
queryWrapper.eq(StrUtil.isNotEmpty(state),"state",state);
queryWrapper.apply(StrUtil.isNotEmpty(time),"DATE_FORMAT(year,'%Y-%m-%d') ='"+time+"'");

问题:mysql设置创建时间字段和更新字段自动获取时间,填充时间

解决:

-- 修改 create_time 设置默认时间 CURRENT_TIMESTAMP
ALTER TABLE `table_name`
    MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;

-- 修改 update_time 设置默认时间 ON UPDATE CURRENT_TIMESTAMP
ALTER TABLE `table_name`
    MODIFY COLUMN `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;

问题:mybatis-plus 去重复查询

解决:

QueryWrapper queryWrapper=new QueryWrapper<>();
queryWrapper.select("DISTINCT year");
List list= baseMapper.selectList(queryWrapper);