本文已参与「新人创作礼」活动,一起开启掘金创作之路
Mybatis-plus是Mybatis的增强版 使用它会简化开发 而具体的使用如下
首先是在pom文件里导入Mybatis-plus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
然后在yml里对项目进行配置
这里有几个点要说一下
1.typeAliasesPackage 这是实体类扫描 如果有多个包需要用逗号分隔
2.id-type:auto 这是设置主键自增的意思
3.field-strategy:字段判断策略 有三个值 1.IGNORED:"忽略判断",2.NOT_NULL:"非 NULL 判断",3.NOT_EMPTY:"非空判断"
mybatis-plus:
mapper-locations: classpath:mappers/*.xml
typeAliasesPackage: com.zl.orm.mybatis.plus.entity
global-config:
db-config:
id-type: auto
field-strategy: not_empty
table-underline: true
db-type: mysql
refresh: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
然后开始写实体类
其中有几个点我说一下
1.@TableName("orm_user") 与数据库里的表做一个映射
- @TableField(fill = INSERT)通过注解配置自动填充
@TableName("orm_user")
public class User implements Serializable {
private static final long serialVersionUID = -18784543L;
/**
* 主键
*/
private Long id;
/**
* 用户名
*/
private String name;
/**
* 加密后的密码
*/
private String password;
/**
* 加密使用的盐
*/
private String salt;
/**
* 邮箱
*/
private String email;
/**
* 手机号码
*/
private String phoneNumber;
/**
* 状态,-1:逻辑删除,0:禁用,1:启用
*/
private Integer status;
/**
* 创建时间
*/
@TableField(fill = INSERT)
private Date createTime;
/**
* 上次登录时间
*/
private Date lastLoginTime;
/**
* 上次更新时间
*/
@TableField(fill = INSERT_UPDATE)
private Date lastUpdateTime;
}
然后写mapper类
mapper类继承了Mybatis-plus的baseMapper
public interface UserMapper extends BaseMapper<User> {
}
然后写service接口类
public interface UserService extends IService<User>{}
最后写service接口实现类
@Service
class UserServiceIml extends ServiceImpl<UserMapper,User> implements UserService{
}
然后就可以在controller里使用了
直接创建一个service对象
@Autowired
UserService userService;
然后调用对象里面继承了IService里面的模板方法来获取你想要的数据
public User getbyId(@PathVariable("id") int id){
User user = userService.getById(id);
return user;
}
如果你还想更简单的话 就直接创建实体类就好了
List<Role> roles = new Role().selectAll();
通过实体类来获取数据
这样就完成了一个mybatis-plus的小demo 这样子看 mybatis-plus 简化了许多我们应该写的代码 但是也有一点点小的缺点 比如项目更新要是快的 未来项目可能不兼容