#测试环境
springboot2.x+mybatisplus3.x
mybatisplus3.x版本和2.x版本有一些区别不同。
测试实体类:User
#导入maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
#创建User实体类
@Data
@TableName(value = "user")
public class User extends Model<User> implements Serializable {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
private String nickname;
private String email;
private String password;
private String icon;
private Integer role;
private String userName;
private Integer age;
private Integer sex;
}
解析:
@Data:生成Get Set方法
@TableName(value = "user") :对应数据库中的表名称
@TableId(value = "id",type = IdType.AUTO) :使用的是数据库默认的自增策略,如果不配置,则默认使用mybatisplus中的自增策略(mybatis自增策略是Long属性,而且生成的主键很长)
Model<User> implements Serializable :序列化
#创建UserMapper接口
@Mapper
@Component("UserMapper")
public interface UserMapper extends BaseMapper<User> {
}
@Component("UserMapper") :解决idea中自动导入爆红的错误
extends BaseMapper<User> :继承接口即可实现基本的CRUD方法
#根据ID主键查询
@Autowired
UserMapper userMapper;
@Test
void contextLoads() {
Integer id=1;
User user = userMapper.selectById(id);
}
#条件查询
//创建条件构造器
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("nickname","sunshine");
Useruser= UserMapper.selectOne(userQueryWrapper );
messageQueryWrapper.eq("nickname","sunshine");
selectOne()查询为一个,如果查询有多个符合条件会报错
其中,第一个参数为数据库中的字段名称,记住,是数据库中的字段
第二个参数为要查询的内容
sql语句中有的条件mybatisplus都有,具体可以查看官方文档https://mp.baomidou.com/这网址很容易就JJ
image.png#解决硬编码条件构造器
感谢评论区的大佬,给的提示。
上面的例子中,我们添加的条件字段必须为数据库中相同的,这样没法体现mybatisplus的特性,所以可以使用LambdaQueryWrapper来构造
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>().eq(User::getNickname, "sunshine");
#查询全部
List<User> userList= userMapper.selectList(null);
查询全部就是不给条件,让条件为null
#条件查询多个
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
// 查询角色为管理员
messageQueryWrapper.eq("role",0);
// 性别为女
messageQueryWrapper.eq("sex",0);
List<User> userList= userQueryWrapper .selectList(userQueryWrapper );
这个例子就是查询所有用户为管理员并且性别为女的用户
也可以写为
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
messageQueryWrapper.eq("role",0).eq("sex",0);
List<User> userList= userQueryWrapper .selectList(userQueryWrapper );
#添加数据
int insert = userMapper.insert(User)
其中User为实体类
返回值为数据库中修改的行数,这里添加成功返回时 “1”
多数据添加看一下官方文档,这里就不说了
#更新数据
int update = userMapper.updateById(user);
updateById()是根据user主键来更新的,如果user类中其它不需要更新的字段可以置为null,mybatisplus不会更新未设置值的字段
网友评论