MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官方文档:https://mp.baomidou.com/guide/
以下是个人整理的Springboot+Mybatis-plus开发模板,适用于任何项目复制粘贴即可。
- 引入依赖
com.baomidou mybatis-plus-boot-starter 3.3.1
注意:如果整合其他框架可能包含mybatis,需要排除。例如:整合activiti就需要排除mybatis。
org.activiti activiti-spring-boot-starter ${activiti.version} org.mybatis mybatis
- 添加配置类MyBatisPlusConfig
@EnableTransactionManagement // 开启事务管理
@MapperScan("com.xxx.xxx.mapper") // 扫描mapper接口
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
- 修改配置文件application.yml
mybatis-plus: # pojo路径别名,在mapper.xml中的resultType无需完全限定名。 type-aliases-package: com.xxx.xxx.entities # xxxMapper.xml 路径 mapper-locations: classpath*:com/xxx/xxx/mapper*.xml
- 定义Entity
@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 authorities;
@Override
public Collection extends GrantedAuthority> getAuthorities() {
return authorities;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
- 定义mapper
SysUserMapper.java,这里不需要增加其他方法,mp的baseMapper已经为我们做了CURD相关方法。
import com.baomidou.mybatisplus.core.mapper.baseMapper; public interface SysUserMapper extends baseMapper{ }
SysUserMapper.xml,个性化sql
- 定义Service
接口ISysUserService.java
import com.baomidou.mybatisplus.extension.service.IService; public interface ISysUserService extends IService{ SysUser findByUsername(String username); }
接口实现:SysUserService.java
注意:不让忘了加@Service注解
@Service public class SysUserService extends ServiceImpltext-implements ISysUserService { @Override public SysUser findByUsername(String username) { if(StringUtils.isEmpty(username)) { return null; } QueryWrapper 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来解决。



