你只管努力,其他交给时间,时间会证明一切。
MyBatis-Plus 是 MyBatis 的增强工具,它简化了 MyBatis 的开发,并提供了许多实用的功能和工具类。下面是 MyBatis-Plus 的使用方法:
在 Maven 项目中,需要在 pom.xml 文件中添加如下依赖:
com.baomidou
mybatis-plus-boot-starter
3.4.3.1
其中
mybatis-plus-boot-starter
是 MyBatis-Plus 的 Spring Boot Starter。
在 Spring Boot 项目中,可以通过在 application.properties 或 application.yml 文件中配置 MyBatis-Plus。例如:
mybatis-plus:
# mapper 文件的路径,多个值用逗号隔开
mapper-locations: classpath:mapper/*.xml
# 实体类所在的包路径,多个值用逗号隔开
typeAliasesPackage: com.example.demo.entity
使用 MyBatis-Plus 时,需要编写实体类,并在实体类上添加注解。例如:
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
在这个实体类中,使用了 Lombok 的
@Data
注解自动生成 getter 和 setter 方法,@NoArgsConstructor
和@AllArgsConstructor
注解自动生成无参和全参构造方法,@TableName
注解指定了实体类对应的数据库表名,@TableId
注解指定主键的生成方式。
使用 MyBatis-Plus 时,可以不用编写 SQL 语句,只需要编写 Mapper 接口,并让该接口继承 MyBatis-Plus 提供的 BaseMapper 接口。例如:
public interface UserMapper extends BaseMapper {
}
在这个接口中,继承了 MyBatis-Plus 提供的 BaseMapper 接口,即可使用 MyBatis-Plus 提供的增删改查方法。
在编写 Mapper 接口后,即可在 Service 层中使用 MyBatis-Plus 提供的增删改查方法。例如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List getUserList() {
return userMapper.selectList(null);
}
@Override
public User getUserById(Long id) {
return userMapper.selectById(id);
}
@Override
public void saveUser(User user) {
userMapper.insert(user);
}
@Override
public void updateUser(User user) {
userMapper.updateById(user);
}
@Override
public void deleteUser(Long id) {
userMapper.deleteById(id);
}
}
在这个 Service 实现类中,使用了 MyBatis-Plus 提供的增删改查方法,例如
selectList
、selectById
、insert
、updateById
和deleteById
等方法。这些方法的参数和返回值都非常简单,使用起来非常方便。
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询条件构造器,它可以通过 Lambda 表达式来构造查询条件,使得查询条件更加简洁、易读。下面是 LambdaQueryWrapper 的具体使用方法介绍:
在使用 LambdaQueryWrapper 之前,需要先创建 LambdaQueryWrapper 对象。例如:
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
在创建 LambdaQueryWrapper 对象时,需要指定实体类的类型,这里以 User 类为例。
使用 LambdaQueryWrapper 可以很方便地构造查询条件。例如:
queryWrapper.eq(User::getName, "张三"); // 等于
queryWrapper.ne(User::getAge, 18); // 不等于
queryWrapper.gt(User::getAge, 20); // 大于
queryWrapper.ge(User::getAge, 20); // 大于等于
queryWrapper.lt(User::getAge, 30); // 小于
queryWrapper.le(User::getAge, 30); // 小于等于
queryWrapper.like(User::getName, "张"); // 模糊查询
queryWrapper.in(User::getAge, Arrays.asList(20, 25, 30)); // in 查询
queryWrapper.isNull(User::getEmail); // 判断为 null
queryWrapper.isNotNull(User::getEmail); // 判断不为 null
在上面的例子中,使用了 Lambda 表达式来指定查询条件,例如
User::getName
表示查询 User 实体类中的 name 属性。
使用 LambdaQueryWrapper 可以很方便地组合查询条件。例如:
queryWrapper.eq(User::getName, "张三").and(qw -> qw.lt(User::getAge, 30).or().isNotNull(User::getEmail));
在上面的例子中,使用了
and
和or
方法来组合查询条件,实现了一个复杂的查询条件。
使用构造好的 LambdaQueryWrapper 对象,可以执行查询操作。例如:
List userList = userMapper.selectList(queryWrapper);
在使用 selectList 方法时,将 LambdaQueryWrapper 对象作为参数传入,即可执行查询操作。同理,还可以使用 selectOne、selectCount 等方法执行查询操作。
以上是 LambdaQueryWrapper 的具体使用方法介绍,通过使用 LambdaQueryWrapper,可以很方便地构造查询条件,使得查询操作更加简洁、易读。
LambdaUpdateWrapper 是 MyBatis-Plus 提供的一个更新条件构造器,它可以通过 Lambda 表达式来构造更新条件,使得更新操作更加简洁、易读。
下面是 LambdaUpdateWrapper 的具体使用方法介绍:
在使用 LambdaUpdateWrapper 之前,需要先创建 LambdaUpdateWrapper 对象。例如:
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
在创建 LambdaUpdateWrapper 对象时,需要指定实体类的类型,这里以 User 类为例。
使用 LambdaUpdateWrapper 可以很方便地构造更新条件。例如:
updateWrapper.eq(User::getName, "张三").set(User::getAge, 30); // 等于
updateWrapper.ne(User::getAge, 18).set(User::getEmail, "[email protected]"); // 不等于
updateWrapper.gt(User::getAge, 20).set(User::getEmail, "[email protected]"); // 大于
updateWrapper.ge(User::getAge, 20).set(User::getEmail, "[email protected]"); // 大于等于
updateWrapper.lt(User::getAge, 30).set(User::getEmail, "[email protected]"); // 小于
updateWrapper.le(User::getAge, 30).set(User::getEmail, "[email protected]"); // 小于等于
在上面的例子中,使用了 Lambda 表达式来指定更新条件,例如
User::getName
表示更新 User 实体类中的 name 属性。
使用 LambdaUpdateWrapper 可以很方便地组合更新条件。例如:
updateWrapper.eq(User::getName, "张三").and(qw -> qw.lt(User::getAge, 30).or().isNotNull(User::getEmail)).set(User::getAge, 20);
在上面的例子中,使用了
and
和or
方法来组合更新条件,实现了一个复杂的更新条件。
使用构造好的 LambdaUpdateWrapper 对象,可以执行更新操作。例如:
userMapper.update(null, updateWrapper);
在使用 update 方法时,将 LambdaUpdateWrapper 对象作为参数传入,即可执行更新操作。同理,还可以使用 updateById、updateBatchById 等方法执行更新操作。
通过使用 LambdaUpdateWrapper,可以很方便地构造更新条件,使得更新操作更加简洁、易读。