参考:http://www.macrozheng.com/#/architect/mall_arch_01
Mybatis generator
概括
根据数据库来自动生成 实体类 mapper xml 文件,自动生成增删改查
数据库:sqlserver
软件:idea
pom依赖库:https://mvnrepository.com/ 这是个宝贝
数据库
数据库随便都可以
视图
红色箭头表示自动生成代码
创建
创建一个SpringBoot项目,导入pom依赖
build里面内容别忘了设置,不然会报错找不到xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mybatis.dome</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
</dependency>
<!-- lombok实体自动导入get,set,toString -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.2.1.jre8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!--集成druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--很重要-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
配置
application.yml配置文件
在application.yml中添加数据源配置和MyBatis的mapper.xml的路径配置。
jdbc:sqlserver://127.0.0.1:1433;DatabaseName=表名
server:
port: 8080
spring:
datasource: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mall
username: root
password: root
mybatis:
mapper-locations:
- classpath:mapper/*.xml
- classpath*:com/**/mapper/*.xml
我这里用的数据库是sqlserver 使用mysql要把配置改成
spring:
datasource:
url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
generator.properties配置
数据库MySQL的同上
jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.connectionURL=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mall
jdbc.userId=root
jdbc.password=root
Mybatis generator 配置文件
配置数据库连接,Mybatis generator生成model、mapper接口及mapper.xml的路径
在这里要注意的几个地方
<properties resource="generator.properties"/> 这里地址要输入对 不然会找不到
这里的自动生成代码给我删掉了,一直报错,有兴趣的可以看下原文
<!--可以自定义生成model的代码注释-->
<!-- <commentGenerator type="com.mybatis.dome.demo.mbg.CommentGenerator.java">-->
<!-- <!– 是否去除自动生成的注释 true:是 : false:否 –>-->
<!-- <property name="suppressAllComments" value="true"/>-->
<!-- <property name="suppressDate" value="true"/>-->
<!-- <property name="addRemarkComments" value="true"/>-->
<!-- </commentGenerator>-->
生成文件地址 这里地址改成自己的地址就好了,地址要写对,不然找不打地方
<!--指定生成model的路径-->
<javaModelGenerator targetPackage="com.mybatis.dome.demo.entity" targetProject="src\main\java"/>
<!--指定生成mapper.xml的路径-->
<sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources"/>
<!--指定生成mapper接口的的路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.dome.demo.Mapper"
targetProject="src\main\java"/>
这里是要操作的表
<table tableName="ums_admin">
<generatedKey column="id" sqlStatement="SQLServer" identity="true"/>
</table>
<table tableName="ums_role">
<generatedKey column="id" sqlStatement="SQLServer" identity="true"/>
</table>
<?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="generator.properties"/>
<context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 为模型生成序列化方法-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- 为生成的Java模型创建一个toString方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--可以自定义生成model的代码注释-->
<!-- <commentGenerator type="com.mybatis.dome.demo.mbg.CommentGenerator.java">-->
<!-- <!– 是否去除自动生成的注释 true:是 : false:否 –>-->
<!-- <property name="suppressAllComments" value="true"/>-->
<!-- <property name="suppressDate" value="true"/>-->
<!-- <property name="addRemarkComments" value="true"/>-->
<!-- </commentGenerator>-->
<!--配置数据库连接-->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.connectionURL}"
userId="${jdbc.userId}"
password="${jdbc.password}">
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<!--指定生成model的路径-->
<javaModelGenerator targetPackage="com.mybatis.dome.demo.entity" targetProject="src\main\java"/>
<!--指定生成mapper.xml的路径-->
<sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources"/>
<!--指定生成mapper接口的的路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.mybatis.dome.demo.Mapper"
targetProject="src\main\java"/>
<!--生成全部表tableName设为%-->
<table tableName="ums_admin">
<generatedKey column="id" sqlStatement="SQLServer" identity="true"/>
</table>
<table tableName="ums_role">
<generatedKey column="id" sqlStatement="SQLServer" identity="true"/>
</table>
</context>
</generatorConfiguration>
添加MyBatis的Java配置
package com.mybatis.dome.demo.Config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.mybatis.dome.demo.Mapper")
public class MyBatisConfig {
}
添加Generator类,运行生成代码
这里要注意的就是这个地方要去读取到generatorConfig.xml的配置,地址别错了
InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
package com.mybatis.dome.demo.Config;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public static void main(String[] args) throws Exception {
//MBG 执行过程中的警告信息
List<String> warnings = new ArrayList<String>();
//当生成的代码重复时,覆盖原代码
boolean overwrite = true;
//读取我们的 MBG 配置文件
InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
is.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//创建 MBG
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning : warnings) {
System.out.println(warning);
}
}
}
这些都配置好了惦运行就可以生成代码了
在这里插入图片描述
注意事项
1.pom文件中的 不添加会报错找不到xml
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
这里不会生成文件,导致无法读取
这里有个参考的 https://blog.csdn.net/zs_world/article/details/107736678
其他一些遇到的错误就是路径地址没写对,数据库配置问题,书写规范就可以
idea链接数据库
链接数据库可以获取到完整的url
maven设置
mevan 设置最好不要用默认的
以上只是配置自动生成代码的,要运行还要配置mybatisConfig.xml
配置mybatisConfig.xml
mapper要把生成的映射进来
这个是mybatis官方文档 https://mybatis.org/mybatis-3/zh/index.html 里面有详细配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mall"/>
<property name="username" value="SHAOqi"/>
<property name="password" value="SHAOqi19990106"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UmsAdminMapper.xml"/>
</mappers>
</configuration>
测试
这里就写个方法main方法测试了,搭配官方的方法
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UmsAdminMapper mapper = sqlSession.getMapper(UmsAdminMapper.class);
Long a= Long.valueOf(1);
UmsAdmin umsAdmin = mapper.selectByPrimaryKey(a);
System.out.println(umsAdmin);
// System.out.println(umsAdminMapper.selectByPrimaryKey(a));
}