今天我们来看一下springboot中使用mybatis来自动生成代码,以前做ssh框架的时候实体和映射经常自己新建,浪费大量的时间,不过hibernate,到现在还是那么的费劲,尤其是复杂查询,特别难写。后来使用 ibatis的时候用xml写sql语句虽然是半自动话,但是复杂查询还能说的过去。最近几年spring data和hibernate差不多,单表查询挺方便,但是复杂查询很难写。不过我还是比较喜欢使用mybatis,mybatis以前叫ibatis,那时候我用的时候写一堆xml,现在也是一样,不过现在借助工具之后,感觉方便多了,可能也是用的习惯问题,比较喜欢使用mybatis。前几篇介绍了常用的excel导入导出图片上传加水印这些常用的代码,加上现在的mybatis的自动化代码生成,基本上做一个简单的系统是差不多了,下面我们来了解一下mybatis。
mybatis简介
MyBatis是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
参照:Mybatis官网 https://mybatis.org/mybatis-3/zh/index.html
mybatis-generator自动生成代码插件使用详解
mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间,生成简单的单表增删查改操作,方便开发人员的专心于业务代码开发。下面我们来看一下具体怎么实现。
1.在springboot框架的pom.xml中配置mybatis相关插件
代码语言:javascript复制 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- 分页 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
2.配置application.yml
代码语言:javascript复制spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/ordershop
username: root
password: 123456
tomcat:
initial-size: 5
max-active: 30
aop:
auto: true
proxy-target-class: false
jpa:
hibernate:
ddl-auto: update
show-sql: true
mybatis:
mapperLocations: classpath:mybatis/mapper*.xml
typeAliasesPackage: com.lz.ordershop.*.model
pageHelper:
reasonable: "true"
supportMethodsArguments: "true"
returnPageInfo: check
params: count=countSql
3.配置mybatis-generator数据库链接
代码语言:javascript复制# MySQL Connector Jar
classPath=C:/Users/user/.m2/repository/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar
# MySQL
jdbc_driver=com.mysql.cj.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/ordershop?useUnicode=true&nullCatalogMeansCurrent=true
jdbc_user=root
jdbc_password=123456
4.配置自动生成的配置文件generatorConfig.xml
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<properties resource="mybatis/config.properties"/>
<classPathEntry location="${classPath}"/>
<context id="context1" targetRuntime="MyBatis3">
<jdbcConnection driverClass="${jdbc_driver}" connectionURL="${jdbc_url}" userId="${jdbc_user}"
password="${jdbc_password}"/>
<javaModelGenerator targetPackage="com.lz.ordershop.sys.model" targetProject="src-genjava"/>
<sqlMapGenerator targetPackage="com.lz.ordershop.sys.dao" targetProject="src-genresources"/>
<javaClientGenerator targetPackage="com.lz.ordershop.sys.dao" targetProject="src-genjava"
type="ANNOTATEDMAPPER"/>
<table tableName="sys_authority"/>
<table tableName="sys_authority_copy"/>
</context>
</generatorConfiguration>
5.配置扫描的dao
代码语言:javascript复制@SpringBootApplication
@MapperScan("com.cn.ms.*.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(TmsframeworkApplication.class, args);
}
}
6.编写cmd脚本执行maven脚本
在spring boot项目根目录下新建clearFile.cmd文件
代码语言:javascript复制@echo off
echo.
echo [信息] 清除文件
echo.
mvn antrun:run
mvn mybatis-generator:generate
pause
在spring boot项目根目录下新建mybatis-generator.cmd文件
代码语言:javascript复制@echo off
echo.
echo [信息] 生成实体文件
echo.
mvn mybatis-generator:generate
pause
编写完脚本后每次生成实体的时候先运行clearFile.cmd文件然后在运行mybatis-generator.cmd文件。