博客系统:使用Mybatis-plus快速构建系统的增删改查
一、前言
mybatis-plus与mybatis就像是魂斗罗里面的两兄弟,有了mybatis-plus,mybatis的使用就会更佳,mybatis-plus可以快速帮我们构建一套增删改查(CRUD)操作,大大减少我们的代码俩,给我这种懒狗提供了极大的遍历,同时,mybatis-plus还提供了主键生成、逻辑删除、分页插件等功能,当然这只是我使用到的功能,更详细使用请参照官方文档:简介 | MyBatis-Plus (baomidou.com)。下面就以user表为例,简单说明他的使用。
二、快速开始
第一步:导入相关依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
第二部:实体类
@Data
@TableName("tb_user")
public class UserEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId
private String id;
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
/**
* 角色
*/
private String roles;
/**
* 头像地址
*/
private String avatar;
/**
* 邮箱地址
*/
private String email;
/**
* 签名
*/
private String sign;
/**
* 状态:0表示删除,1表示正常
*/
private Integer state;
/**
* 注册ip
*/
private String regIp;
/**
* 登录Ip
*/
private String loginIp;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
这里用了Lombok,自动生成setter、getter、构造器
第三步:UserMapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hobby.myblog.dao.UserDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.hobby.myblog.entity.UserEntity" id="userMap">
<result property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="password" column="password"/>
<result property="roles" column="roles"/>
<result property="avatar" column="avatar"/>
<result property="email" column="email"/>
<result property="sign" column="sign"/>
<result property="state" column="state"/>
<result property="regIp" column="reg_ip"/>
<result property="loginIp" column="login_ip"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
第四步:UserDao
要继承至BaseMapper,它有相关的增删改代码
@Mapper
public interface UserDao extends BaseMapper<UserEntity> {
int updatePwdByEmail(@Param("password") String password,@Param("email") String email);
}
第五步:IService
通过继承IService实现基本的CRUD,以及获取分页
public interface UserService extends IService<UserEntity> {
PageUtils queryPage(Map<String, Object> params);
}
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<UserEntity> page = this.page(
new Query<UserEntity>().getPage(params),
new QueryWrapper<UserEntity>()
);
return new PageUtils(page);
}
}
这样一来,增删改查就能够使用了
但其实,easycode插件可以直接生成相关代码,包括Controller,Service,Dao,Mapper,如果你也是个懒狗,可以再搜索一下这个插件。
三、主键生成、分类、逻辑删除的配置
1.分页插件依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.3.1</version>
</dependency>
2.分类的使用:
- 获取分类列表:http://localhost:8080/user/list
- 参数格式:form-data
-
分页返回结果
3.yml配置文件
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: ASSIGN_ID //主键自动生成
logic-delete-field: state # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 0 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)
通过上述的一些操作,让本懒狗体会到了编程的快乐,后续还会继续发现mybatis-plus的其他用处,然后再分享给大家。