本文以记录相关方法为目的,只有最基础的功能,实例代码是由另一个代码生成器项目生成的,作为例子略有简陋。
第一步:准备工作
通过IDEA创建maven工程,不采用模板,并创建项目的基础结构,并在pom.xml中添加依赖的jar包。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.foxhis.plateno.trans</groupId>
<artifactId>GenerateBIData</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<skipTests>true</skipTests>
</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.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.14</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<!-- 连接sqlserver数据库所需依赖包-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<!--此处添加一个mysql-connector-java依赖可以防止找不到jdbc Driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
由于删除了其他项目的依赖包和一些别的代码只保留了一些依赖包,不知道有没有误删掉关键jar包或者残留了一些多余的依赖包,主要jar包就是springboot,Mybatis,连接数据库的相关依赖以及生成插件依赖(建议该插件版本1.3.7,版本低在做其他东西的时候发现会有一些错误),项目结构也不一定都要写,关键的实体类包和mapper包以及resources下存放xml文件包一定要有,下面还有其他包可按照待会的xml文件自己理解添加完整
二、配置文件
yml文件中配置端口、数据库等相关信息(按实际自己的信息更改,后面配置文件里的salve数据库采用的是sqlserver,作为例子一个应该够了,其他的我删掉了,用的其他的数据库mysql也差不多,别的没有试过)
generatorConfig.xml中配置生成代码的相关信息如位置等(这个xml文件名字不可以换)
server:
port: 9193
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.foxhis.plateno.trans.model
spring:
jpa:
database: mysql
datasource:
slave:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc-url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=bitest
username: sa
password: 123456
<?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>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
<!--<classPathEntry location="D:\Git\mysql-connector-java-8.0.15\mysql-connector-java-8.0.15.jar"/>-->
<classPathEntry location="C:\repository\com\microsoft\sqlserver\mssql-jdbc\6.4.0.jre8\mssql-jdbc-6.4.0.jre8.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--覆盖生成xml文件 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=bitest" userId="sa" password="123456">
<!-- connectionURL属性,防止生成不同数据库同名表的代码 -->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.foxhis.plateno.trans.model.bi" targetProject="D:/test/src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mapping/bi" targetProject="D:/test/src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.foxhis.plateno.trans.mapper.bi"
targetProject="D:/test/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="" domainObjectName="" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
generatorConfig.xml里有注释,像表名还有实际类名(我估计看的人用不上我就删了,自己取名字),文件位置看自己的情况(看注释)
package com.foxhis.plateno.trans.configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.foxhis.plateno.trans.mapper.bi",sqlSessionFactoryRef = "slaveSqlSessionFactory")
public class BISourceConfig {
@Bean(name = "slaveDataSource")
@ConfigurationProperties("datasource.slave")
public DataSource slaveDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "slaveSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:mapping/bi/*.xml"));
return sessionFactoryBean.getObject();
}
}
configuration包下的springboot配置数据源的代码如上,不会的或者像我记不住的可以借鉴(像位置这些理解下应该都会改)
启动类的截图如下,有些可能不会写这个的可以参考下,或者会像我一样浪费时间发现数据库老是找不到配置报错的那就注解里的都加上,这个想了解为什么的可以去自己查一下,这里只为了能快速跑通,不是很相关的就不引入了。
三、启动
在Maven的插件处启动(或者如果有需要也可以使用代码启动,我需要所以去查了一下,有需要的可以参考一下
https://blog.csdn.net/mameng1988/article/details/79927008
)