MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官方文档:https://mp.baomidou.com/guide/
以下是个人整理的Springboot+Mybatis-plus开发模板,适用于任何项目复制粘贴即可。
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.3.1version>
dependency>
注意:如果整合其他框架可能包含mybatis,需要排除。例如:整合activiti就需要排除mybatis。
<dependency>
<groupId>org.activitigroupId>
<artifactId>activiti-spring-boot-starterartifactId>
<version>${activiti.version}version>
<exclusions>
<exclusion>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
exclusion>
exclusions>
dependency>
@EnableTransactionManagement // 开启事务管理
@MapperScan("com.xxx.xxx.mapper") // 扫描mapper接口
@Configuration
public class MyBatisPlusConfig {
/**
* 分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
mybatis-plus:
# pojo路径别名,在mapper.xml中的resultType无需完全限定名。
type-aliases-package: com.xxx.xxx.entities
# xxxMapper.xml 路径
mapper-locations: classpath*:com/xxx/xxx/mapper/**/*.xml
@Data
@ApiModel("用户表")
@TableName("sys_user")
public class SysUser implements UserDetails {
@TableId(value = "id", type = IdType.ASSIGN_ID)
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("昵称")
private String nickName;
@ApiModelProperty("头像URL")
private String imageUrl;
@TableField(exist = false) // 不是表中字段
@ApiModelProperty("封装用户权限")
private Set<GrantedAuthority> authorities;
/**
* 返回权限集合
* @return
*/
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
/**
* 账号是否过期,后期维护到用户表中某个字段即可
* @return
*/
@Override
public boolean isAccountNonExpired() {
return true;
}
/**
* 账号是否锁定,后期维护到用户表中某个字段即可
*/
@Override
public boolean isAccountNonLocked() {
return true;
}
/**
* 密码是否过期,后期维护到用户表中某个字段即可
* @return
*/
@Override
public boolean isCredentialsNonExpired() {
return true;
}
/**
* 是否可用
* @return
*/
@Override
public boolean isEnabled() {
return true;
}
}
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SysUserMapper extends BaseMapper<SysUser> {
}
SysUserMapper.xml,个性化sql
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.xxx.mapper.SysUserMapper">
mapper>
import com.baomidou.mybatisplus.extension.service.IService;
public interface ISysUserService extends IService<SysUser> {
SysUser findByUsername(String username);
}
接口实现:SysUserService.java
注意:不让忘了加@Service注解
@Service
public class SysUserService extends ServiceImpltext-<SysUserMapper, SysUser> implements ISysUserService {
@Override
public SysUser findByUsername(String username) {
if(StringUtils.isEmpty(username)) {
return null;
}
QueryWrapper<SysUser> wrapper = new QueryWrapper();
wrapper.eq("username", username);
// baseMapper 对应的是就是 SysUserMapper
return baseMapper.selectOne(wrapper);
}
}
@SpringBootTest
public class TestUser {
@Autowired
ISysUserService sysUserService;
@Test
public void testUser() {
SysUser sysUser = sysUserService.findByUsername("张三");
System.out.println(sysUser.getUsername());
}
}
总结:Mybatis-plus只是Mybatis的增加版,对于单表操作确实方便了很多,但是,如果是复杂查询也就是多表关联查询的话,建议还是写sql来解决。