Mybatis-Plus是一个基于Mybatis的ORM框架,提供了很多便捷的操作数据库的方法,其中实体类注解方法常用于简化CRUD操作。下面将详细讲解Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法的完整攻略。
1. 实体类注解方法
Mybatis-Plus实体类注解方法主要是使用注解来简化常规的数据库操作,包括字段映射、自动填充、基本操作等。
下面是一些常用的注解方法:
1.1 @TableName
用于指定实体对应的数据库表名,如果不指定,则默认使用实体类的类名。
@TableName("user")
public class User {
// ...
}
1.2 @TableField
用于指定实体字段对应的数据库表字段名,如果不指定,则默认使用实体字段的名称。
@TableField(value = "username", exist = true)
private String name;
1.3 @TableId
用于指定实体对应的数据库表主键,如果不指定,则默认使用名为"id"的字段作为主键。
@TableId(value = "id", type = IdType.AUTO)
private Long id;
1.4 @TableLogic
用于指定逻辑删除字段的属性,当字段值为指定值时,表示该记录已被删除。如果不指定,则默认使用名为"deleted"的字段作为逻辑删除字段。
@TableLogic(value = "1", delval = "0")
private Integer deleted;
1.5 @Version
用于指定乐观锁的属性,当该属性值为null或0时,表示未加锁;非null且大于0时,表示已加锁。
@Version
private Integer version;
2. Mapper层的CRUD方法
Mybatis-Plus提供了丰富的Mapper层操作方法,可以满足大部分数据库操作需求。
下面是常用的Mapper层方法:
2.1 基本操作方法
提供insert、deleteById、updateById、selectById等基本CRUD操作方法。
public interface UserMapper extends BaseMapper<User> {
}
2.2 自定义操作方法
提供自定义SQL实现的方法,例如通过用户名查询用户。
public interface UserMapper extends BaseMapper<User> {
@Select("select * from user where name=#{name}")
User selectByName(@Param("name") String name);
}
2.3 分页查询方法
提供分页查询的方法,可以方便地进行分页查询操作。
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectPageVo(Page<?> page, @Param("state") Integer state);
}
3. Service层的CRUD方法
Service层是业务逻辑的主要入口,使用Mybatis-Plus实现CRUD操作也十分简单。
下面是常用的Service层方法:
3.1 基本操作方法
调用Mapper层的对应方法即可,例如deleteById、updateById等方法。
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
3.2 自定义操作方法
在Service层中扩展自定义的方法,调用Mapper层对应的方法即可。
public interface UserService extends IService<User> {
User selectByName(String name);
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public User selectByName(String name) {
return baseMapper.selectByName(name);
}
}
3.3 分页查询方法
使用Mybatis-Plus提供的分页查询方法即可实现分页查询操作,调用Mapper层的对应方法即可。
public interface UserService extends IService<User> {
IPage<User> getUserList(Page<User> page, Integer state);
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public IPage<User> getUserList(Page<User> page, Integer state) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("state", state);
return baseMapper.selectPage(page, queryWrapper);
}
}
示例
下面是两个示例,分别是使用实体类注解方法和基本操作方法实现对用户表的增删改查操作:
示例1:使用实体类注解方法
@TableName("user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField(value = "username")
private String name;
@TableField(value = "age")
private Integer age;
@TableField(value = "state")
private Integer state = 1;
@TableLogic(value = "0", delval = "1")
private Integer deleted;
@Version
private Integer version;
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public User getUserById(Long id) {
return getById(id);
}
@Override
public List<User> getUserList() {
return list();
}
@Override
public boolean saveUser(User user) {
return save(user);
}
@Override
public boolean updateUser(User user) {
return updateById(user);
}
@Override
public boolean deleteUser(Long id) {
return removeById(id);
}
}
示例2:使用基本操作方法
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public User getUserById(Long id) {
return getById(id);
}
@Override
public List<User> getUserList() {
return list();
}
@Override
public boolean saveUser(User user) {
return save(user);
}
@Override
public boolean updateUser(User user) {
return updateById(user);
}
@Override
public boolean deleteUser(Long id) {
return removeById(id);
}
}
以上就是Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法 - Python技术站