注意:与之前不同的是,实体类需要继承 Model 类,并重写 pkVal 方法。
@Data
public class UserInfo extends Model<UserInfo> {
private Integer id;
private String userName;
private String passWord;
private Integer age;
//重写这个方法,return当前类的主键
@Override
protected Serializable pkVal() {
return id;
}
}
提示:虽然 AR 模式用不到该接口,但是一定要定义,否则使用 AR 时会报空指针异常。
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}
AR 操作是通过对象本身调用相关方法,比如要 insert 一个 user,那就用这个 user 调用 insert 方法即可。
UserInfo user = new UserInfo();
user.setUserName("hangge");
user.setPassWord("!0001");
user.setAge(100);
//AR插入操作,返回执行是否成功
Boolean success = user.insert();
UserInfo user = new UserInfo();
user.setId(1);
user.setUserName("hangge");
user.setPassWord("!0001");
user.setAge(100);
//根据id修改数据,返回执行是否成功
Boolean success = user.updateById();
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40);
// 将满足条件的记录密码都设置为8888
UserInfo user = new UserInfo();
user.setPassWord("8888");
//修改数据,返回执行是否成功
Boolean success = user.update(updateWrapper);
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40)
.set(UserInfo::getPassWord, "8888")
.set(UserInfo::getAge, null);
// 修改数据,返回执行是否成功
Boolean success = new UserInfo().update(updateWrapper);
/*********** 二者可以结合使用的,下面效果等效于上面的 ****************/
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40)
.set(UserInfo::getAge, null);
// 将满足条件的记录密码都设置为8888
UserInfo user = new UserInfo();
user.setPassWord("8888");
// 修改数据,返回执行是否成功
Boolean success = user.update(updateWrapper);
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40)
.setSql("pass_word = '8888'")
.setSql("age = null");
// 修改改据,返回执行是否成功
Boolean success = new UserInfo().update(updateWrapper);
/*********** 二者可以结合使用的,下面效果等效于上面的 ****************/
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40)
.setSql("age = null");
// 将满足条件的记录密码都设置为8888
UserInfo user = new UserInfo();
user.setPassWord("8888");
// 修改改据,返回执行是否成功
Boolean success = user.update(updateWrapper);
调用实体对象的 insertOrUpdate 会先判断实体类是否包含主键 ID,如果有的话则执行更新操作,没有的话则执行新增操作:
UserInfo user1 = new UserInfo();
user1.setId(1);
user1.setUserName("hangge");
user1.setAge(100);
// 由于user1设置了主键id,则执行更新操作
user1.insertOrUpdate();
UserInfo user2 = new UserInfo();
user2.setUserName("hangge");
user2.setAge(100);
// 由于user2没有设置主键id,则执行新增操作
user2.insertOrUpdate();
UserInfo user = new UserInfo();
user.setId(23);
// 删除数据,返回执行是否成功
Boolean success = user.deleteById();
/****** 下面代码功能等效上面代码 ********/
Boolean success = new UserInfo().deleteById(23);
// 查询条件:名字中包含'ha'并且年龄小于40
LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(UserInfo::getUserName,"ha").lt(UserInfo::getAge,40);
// 删除数据,返回执行是否成功
Boolean success = new UserInfo().delete(queryWrapper);
UserInfo user = new UserInfo();
user.setId(1);
// 根据ID查询数据
user = user.selectById();
/****** 下面代码功能等效上面代码 ********/
UserInfo user= new UserInfo().selectById(1);
注意:如果数据库中符合传入条件的记录有多条,这个方法会返回第一条数据,不会报错。
// 查询条件:名字中包含'ha'并且年龄小于40
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name","ha").lt("age",40);
// 开始查询
UserInfo user= new UserInfo().selectOne(queryWrapper);
List<UserInfo> users = new UserInfo().selectAll();
// 查询条件:名字中包含'ha'并且年龄小于40
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name","ha").lt("age",40);
// 开始查询
List<UserInfo> users = new UserInfo().selectList(queryWrapper);
// 查询条件:名字中包含'ha'并且年龄小于40
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name","ha").lt("age",40);
// 开始查询
Integer count = new UserInfo().selectCount(queryWrapper);
这个分页方法和 BaseMapper 提供的分页一样都是物理分页,使用前需要要进行相关的插件配置,具体配置参考我之前的文章
LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(UserInfo::getPassWord,"123").lt(UserInfo::getAge,40);
// 开始查询
IPage<UserInfo> page = new UserInfo().selectPage(new Page<>(1,2), queryWrapper);
点击跳转至原文地址
--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------
--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------