开发框架 MyBatis-Plus
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这意味着,引入 MyBatisPlus 不会对现有的 MyBatis 架构产生任何影响。MyBatisPlus 致力于简化 CRUD 操作,启动时加载 XML 配置时注入单表 SQL 操作,为简化开发工作、提高生产率而生。
MyBatis 配置说明
接下来以用 idea 开发的 Java 项目进行说明。
在使用 Maven 工具来管理 jar 包情况下,可以在下载 unvdb 数据库后从数据库 Interface/JDBC 路径拉取 unvdb 的 JDBC 驱动 jar 包,通过 mvn install:install-file -Dgroupld=com.unvdb -DartifactId=unvdb-jdbc -Dversion=42.7.3 -Dpackaging=jar -Dfile=unvdb-jdbc-42.7.3.jar 将 JDBC 驱动导入到本地的 Maven 仓库。
在创建一个 SpringBoot 的项目之后,在 pom.xml 文件中添加 SpringBoot 和 MyBatis-plus 的依赖。对于maven,添加以下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- 实现 web 功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 数据库连接驱动 -->
<dependency>
<groupId>com.unvdb</groupId>
<artifactId>unvdb-jdbc</artifactId>
<version>42.7.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- Druid 依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<!-- 配置国密所需依赖 -->
<dependency>
<groupId>org.openeuler</groupId>
<artifactId>bgmprovider</artifactId>
<version>1.1.3</version>
</dependency>
在resources目录下新建application.properties文件,用于存放数据库连接需要的一些配置数据(一般在新建Springboot项目都会自动生成该文件),也可以新建application.yml文件,不过格式得转换。以下是yml文件的相关配置:
spring:
datasource:
driver-class-name: com.unvdb.Driver
url: jdbc:unvdb://localhost:5678/test
username: 登录名
password: 登录密码
# mybatis-plus 相关配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
type-aliases-package: cn.kgc.springboot04.entity
mapper-locations: classpath:mapper/*.xml
c.配置实体类:
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Data
public class SysConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**
* configId
*/
@TableId(type = IdType.AUTO)
Integer id;
String paramKey;
String paramValue;
Integer status;
String remark;
}
d.mybatisplus 分页插件 MybatisPlusConfig:
@EnableTransactionManagement
@Configuration
@MapperScan("com.softdev.system.mapper")
public class MybatisPlusConfig {
/**
* 分页插件 3.5.1
*/
@Bean
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
// 设置请求的页面大于最大页后操作,true 调回到首页,false 继续请求 默认 false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setMaxLimit(-1L);
paginationInterceptor.setDbType(DbType.POSTGRE_SQL);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setOptimizeJoin(true);
return paginationInterceptor;
}
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.setInterceptors(Collections.singletonList(paginationInnerInterceptor()));
return mybatisPlusInterceptor;
}
}
启动类添加扫描mapper注解。 启动 springboot 的 application 启动类:会报错,提示找不到 mapper 文件,我们需要在 springboot 启动类上添加扫描 mapper 的注解:
@SpringBootApplication
@MapperScan("com.softdev.system.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
展示 SysConfigService:
@Service
@Slf4j
public class SysConfigService {
@Autowired
SysConfigMapper sysConfigMapper;
}
mapper 中执行在表中进行简单的查询语句:
@Mapper
public interface SysConfigMapper extends BaseMapper<SysConfig> {
@Select("select t.param_value from sys_config t where t.param_key=#{name} ")
String value(String name);
@Select("select t.param_value from sys_config t where t.param_key=#{name} ")
Integer valueInt(String name);
}
controller层实现业务模块流程的控制:
@RestController
public class IndexController {
@Autowired
SysConfigMapper sysConfigMapper;
@GetMapping("/")
public Object indexPage(){
return "hello world";
}
@GetMapping("/author")
public Object author(){
return ReturnUtil.DATA(sysConfigMapper.value("developer"));
}
@GetMapping("/author2")
public Object author2(){
return ReturnUtil.DATA(
sysConfigMapper.selectOne(
new QueryWrapper<SysConfig>()
.eq("param_key","developer")));
}
}
MyBatis-Plus 注意事项
Mybatis-Plus2.x 和 Mybatis-Plus3.x 的包结构不同,注意引用时的包路径的区别。九有超融合数据库在适配 Mybatis-Plus 时,由于 Mybatis-Plus 无法识别九有超融合数据库,故在相关配置中需将其配置成兼容的postgresql。