SpringBoot下实现mybatis代码自动生成

 

 

 

一、环境准备,spring boot web工程,Eclipse开发工具,数据库等。

1、创建一个spring boot工程

2、创建一个数据库和对应的表

二、配置文件,生成代码。

1、修改pom.xml文件,添加mybatis,mybatis-generator,druid,mysql等依赖

具体代码如下: 代码里面有配置参数的详细解释,就不在累赘叙述一遍了。

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.ai</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
		<relativePath/>
		<!-- lookup parent from repository。需要修改1.5.4版本为1.5.2不然添加下面的依赖的时候pom.xml文件报错 -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<!--mybatis的依赖。匹配spring Boot1.5 or higher-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.0</version>
		</dependency>

		<!-- 分页插件的依赖,是别人写的一个插件,如果使用limit原始分页方式可以不加这个 -->
		<dependency>
		    <groupId>com.github.pagehelper</groupId>
		    <artifactId>pagehelper-spring-boot-starter</artifactId>
		    <version>1.1.0</version>
		</dependency>
		<!-- mysql的jdbc连接依赖 ,如果使用的是oracle请修改为oracle的jdbcjar依赖-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- 阿里的druid依赖 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.19</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.31</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.3</version>
		</dependency>
		
	</dependencies>

	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
			    <artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- 下面的plugin配置是给mybatis自动生成代码用的,可以直接在eclipse里面直接生成代码,
			或者使用mybatis-generator工具的命令行也可以生成,具体使用方法请百度一下 -->
			<plugin>  
                <groupId>org.mybatis.generator</groupId>  
                <artifactId>mybatis-generator-maven-plugin</artifactId>  
                <version>1.3.5</version>  
                <dependencies>   
                
                    <dependency>  
                        <groupId>org.mybatis.generator</groupId>  
                        <artifactId>mybatis-generator-core</artifactId>  
                        <version>1.3.5</version>  
                    </dependency>  
                </dependencies>  
                <executions>  
                    <execution>  
                        <id>Generate MyBatis Artifacts</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>generate</goal>  
                        </goals>  
                    </execution>  
                </executions>  
                <configuration>  
                    <!--允许移动生成的文件 -->  
                    <verbose>true</verbose>  
                    <!-- 是否覆盖 -->  
                    <overwrite>true</overwrite>  
                    <!-- 自动生成的配置 -->  
                    <!-- <configurationFile>  
                        src/main/resources/mybatis-generator/generatorConfig-learn.xml
                    </configurationFile> -->
                    <!-- 多数据源需要配置多个,方便生成代码的时候使用,该配置文件一个数据源一个,切换配置文件就可以生成对应的数据源的代码了 -->
                    <configurationFile>  
                    	src/main/resources/mybatis-generator/generatorConfig-student.xml
                    </configurationFile> 
                </configuration>  
            </plugin>  
		</plugins>
		<!-- 下面的rerource配置是为了让变异工程的时候把resource目录下的一些配置文件编译到变异目录下,不配置变异xml文件不好使 -->
		<resources>  
            <resource>  
                <directory>src/main/resources</directory>  
            </resource>  
        </resources>  
	</build>


</project>

2、创建并编写mybatis自动生成代码配置文件,并生成对应的dao,model,mapper代码。
该配置文件需要创建一个,目录就是上面pom.xml文件里面写的那个路径src/main/resources/mybatis-generator/generatorConfig-learn.xml。

具体代码如下: 代码里面有配置参数的详细解释,就不在累赘叙述一遍了。

<?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>
 		<!-- jdbc连接的mysql或者oracle的连接包jar,最好是配置为绝对路径 -->
     <classPathEntry
             location="C:/Users/jiuqu/.m2/repository/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar"/>
     <context id="my" targetRuntime="MyBatis3">
         <commentGenerator>
             <property name="suppressDate" value="false"/>
             <property name="suppressAllComments" value="true"/>
         </commentGenerator>
 		<!-- 配置数据源信息,多数据源需要配置多份文件,对应需要修改数据源信息,可以使不同主机的数据库,也可以是同一数据库服务器上的不同数据库名 -->
         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://10.1.45.253/learn" userId="dev-bj" password="123456">    
        </jdbcConnection>   
 		<!-- 配置生成的model对象也就是javabean,对应数据库表属性的javabean生成到的包路径和绝对代码路径,只需要配置到工程的/src/main/java就可以了,具体的路径由包路径指定。
 			由于多数据源,所以我在model后面加了一层以示区分不同数据源的信息 -->
         <javaModelGenerator targetPackage="com.ai.demos.model.learn"
                             targetProject="C:/myDir/WorkSpace/EclipseWorkSpace/demo/src/main/java">
             <property name="enableSubPackages" value="true"/>
             <property name="trimStrings" value="true"/>
         </javaModelGenerator>
 		<!-- mapper文件生成路劲和包名 -->
         <sqlMapGenerator targetPackage="com.ai.demos.mapper.learn"
                          targetProject="C:/myDir/WorkSpace/EclipseWorkSpace/demo/src/main/java">
             <property name="enableSubPackages" value="true"/>
         </sqlMapGenerator>
 		<!-- dao层接口文件 -->
         <javaClientGenerator targetPackage="com.ai.demos.dao.learn"
                              targetProject="C:/myDir/WorkSpace/EclipseWorkSpace/demo/src/main/java" type="XMLMAPPER">
             <property name="enableSubPackages" value="true"/>
         </javaClientGenerator>
 		<!-- 数据库里面的表名信息和配置,多张表需要配置多条信息 -->
 		<table tableName="learn_resource" domainObjectName="LearnResource"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
         </table> 
 
         <!-- <table tableName="student" domainObjectName="Student"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
         </table>
          <table tableName="course" domainObjectName="Course"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
         </table>
          <table tableName="score" domainObjectName="Score"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
         </table>
          <table tableName="teacher" domainObjectName="Teacher"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
         </table>
          -->
 
     </context>
 </generatorConfiguration>

 

3、当上面的一切配置完成之后,右键工程的pom.xml文件。

可选步骤:

(先执行run as下的 maven install,然后执行maven clean。当maven clean成功之后,表示编译完成。)

必须步骤:

(1)、执行run as 下面的maven build,在弹出来的对话框的Goals输入框里面输入mybatis-generator:generate,然后点击Run运行。

 

(2)、执行完第一个步骤之后其实代码已经生成了,但是你会发现工程里面看不见代码。这时还需要执行Run as下面的maven generate-source,神奇的代码出现了。

 

对于自动生成的代码,我们需要在所有的dao文件的类上面加一个@Mapper注解,不然没法自动注入;

还需要把mapper文件移动到resource目录下,创建一个mapper/xxxx/*.xml其中xxxx表示数据源名称,这样可以区分不同数据源的mapper文件,方便映射管理。

 

到此,mybatis的代码自动生成就完毕了,开始编写我们的业务代码吧。

 

由于博客没法贴太多代码,我把这个工程的源代码放到了下载资源里面,想参考源代码的同学直接下载即可

百度网盘分享地址如下

链接:http://pan.baidu.com/s/1jIQfVsa 密码:odz9

csdn下载资源连接如下

http://download.csdn.net/detail/tianhouquan/9881563

github资源地址为:

https://github.com/jiuquguiyu/demos

 

 

 

 

 

Logo

更多推荐