为什么用单 Mapper 模式?
1:更省事,不需要一个个写 Mapper
2:更省内存,如果你有 1000 个表,那可以省 1000 个类以及 1000 * N 个方法,可能可多;对于 mybatis 来说,能更快的匹配到对应的执行方法
1:引入 maven 依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>cn.mybatis-mp</groupId>
<artifactId>mybatis-mp-spring-boot-parent</artifactId>
<version>1.7.7-RC5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>cn.mybatis-mp</groupId>
<artifactId>mybatis-mp-spring-boot-starter</artifactId>
</dependency>
</dependencies>
2:配置 mybatis-mp 启动项
@MapperScan(basePackageClasses = BasicMapper.class , annotationClass = Mapper.class)
3:增删改查,丝滑流畅,简单方便
引入 Mapper
@Autowired
private BasicMapper basicMapper;
3.1:查询
AppVersion appVersion = basicMapper.getById(AppVersion.class , 1);
List<AppVersion> list= QueryChain.of(basicMapper,AppVersion.class)
.eq(AppVersion::getId,1)
.like(AppVersion::getName,"xx")
.list();
Pager<AppVersion> page= QueryChain.of(basicMapper,AppVersion.class)
.eq(AppVersion::getId,1)
.like(AppVersion::getName,"xx")
.paging(Pager.of(1,10));
3.2:删除
basicMapper.delete(appVersion);
basicMapper.deleteById(AppVersion.class , 1);
basicMapper.delete(AppVersion.class, where -> where.eq(AppVersion::getId,1))
3.3:改
basicMapper.update(appVersion)
3.4:新增
basicMapper.save(appVersion)
3.5:如果想在 XML 里写也很简单
<mapper namespace="cn.mybatis.mp.core.mybatis.mapper.BasicMapper">
<select id="SysRole:basicXmlPaging" resultType="com.mybatis.mp.core.test.DO.SysRole">
select *
from sys_role
where id >= #{id}
and id <= #{id2}
order by id asc
</select>
</mapper>
List<SysRole> list = sysRoleMapper.getBasicMapper().withSqlSession(".SysRole:basicXmlPaging", new HashMap() {{
put("id", 1);
put("id2", 2);
}},(statement, params, sqlSession) -> {
return sqlSession.selectList(statement, params);
});