mybatis plus (sqlserver) 根据条件来获取id最大的,或者是新增的最新的一条记录(同条件可能会有多条出现)
1、mysql的版本 limit 1
QueryWrapper<Userinfo> queryWrapper = new QueryWrapper<>();queryWrapper.eq("fid", payment.getFid());return userinfoMapper.selectOne(queryWrapper.orderByDesc("id").last("limit 1"));
只要类似以上的代码,就可以成功的,获取到fid一致的userinfo的最新的一条记录,当然这里的id是自增的。
发现sql是这样:
select fieldname from userinfo where fid=1 order by id desc limit 1
发现超级可以。
2、sqlserver版本的top 1
sqlserver中没有limit 1这种,只有top 1,类似以下的sql:
select top 1 fieldname from userinfo where fid=1 order by id desc
3、sqlserver中实现
方法一:取得id取记录
QueryWrapper<Userinfo> queryWrapper = new QueryWrapper<>();queryWrapper.eq("fid", payment.getFid());queryWrapper.select("max(id) as id");Userinfo userinfot = userinfoMapper.selectOne(queryWrapper);return userinfoMapper.selectById(userinfot.getId());
上面根据条件取得id,然后通过id来取得这条记录,转了一下。
方法二:分页取一条
QueryWrapper<Userinfo> queryWrapper2 = new QueryWrapper<>();queryWrapper2.eq("fid", payment.getFid());queryWrapper2.orderByDesc("id");Page<Userinfo> users = userinfoMapper.selectPage(new Page<>(1,1), queryWrapper2);if(users.getTotal()>0) {return users.getRecords().get(0);}return null;
上面的sql是通过分页取一条来处理的。
方法三:@Select注解 mybatis
这样就可以成功取到了一条记录,当然我们也可以直接用sql语句来编号用@Select来类似这种:
这个在mapper直接用注解的方法来处理,当然也可以是基于xml的,看个人喜欢吧。