上一篇文章讲解了springboot+mybatis的整合:springboot整合mybatis全过程实例
整合了mybatis后操作数据库变得更加便捷,但是带来了另一个问题:需要大量手工创建pojo和mapper文件,而Mybatis Generator就是用来解放我们的双手,代替我们解决这样的重复性的工作。
总的来说:mybatis generator工具是用来自动化生成实体类、mapper配置文件、dao层代码的工具。
在springboot整合了mybatis的基础上,我们一步步的引入mybatis generator工具,并在浏览器中实现查询,进行演示。
1.在pom.xml中的build标签中配置mybatis generator插件:
<!--mybatis-generator--> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <dependencies> <dependency> <groupId> mysql</groupId> <artifactId> mysql-connector-java</artifactId> <version> 5.1.39</version> </dependency> <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.xml</configurationFile> </configuration> </plugin> <!--mybatis-generator-->
注意:configuration标签中的configurationFile中配置自己的Mybatis Generator配置文件。
2.创建我们的数据库表,这里创建一个products表
3.在上面configurationFile的位置创建相应的mybatis-generator.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> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否生成注释代时间戳--> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接地址账号密码--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/test" userId="test" password="test"> </jdbcConnection> <javaTypeResolver> <!--该属性可以控制是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal,默认值为false,一般不需要配置。--> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成Model类存放位置--> <javaModelGenerator targetPackage="com.example.demo.models" targetProject="src/main/java"> <!--enableSubPackages:如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false。--> <property name="enableSubPackages" value="true"/> <!--trimStrings:是否对数据库查询结果进行trim操作,如果设置为true就会生成类似这样public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默认值为false。--> <property name="trimStrings" value="true"/> </javaModelGenerator> <!--生成映射xml文件存放位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--生成Dao类存放位置(*Mapper.java)--> <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码 type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象 type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象 type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!--生成对应表及类名--> <table tableName="products" domainObjectName="Products" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <!--useActualColumnNames:如果设置为true,那么MBG会使用从数据库元数据获取的列名作为生成的实体对象的属性。 如果为false(默认值),MGB将会尝试将返回的名称转换为驼峰形式。 在这两种情况下,可以通过 元素显示指定,在这种情况下将会忽略这个(useActualColumnNames)属性。--> <property name="useActualColumnNames" value="true"/> <!-- 数据库表主键 --> <generatedKey column="id" sqlStatement="Mysql" identity="true" /> </table> </context> </generatorConfiguration>
上面的配置中,分别将数据库实体文件生成到src/main/java的com.example.demo.models包中,将*Mapper.java文件生成到src/main/java的com.example.demo.dao包中,将*Mapper.xml SQL映射文件生成到src/main/resources的mapper文件夹中。
<table>标签就是我们对应到数据库中的表,有多少个表,就建多少个table标签。
注意:javaClientGenerator 有三种模式(type),type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象,type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象,type="XMLMAPPER",生成SQLMap 的XML格式文件和独立的Mapper接口,上面是配置的XMLMAPPER类型,进而将*Mapper.Java文件生成到com.example.demo.dao包中,将*Mapper.xml生成到src/main/resources的mapper文件夹中。
4.使用IntelliJ IDEA生成相应pojo和mapper文件
双击上图中的mybatis-generator:generate可以看见相应文件夹下生成了文件。
如果没有mybatise-generator的话请点击:
接着可以看见文件目录和文件如下:
注意:给生成的ProductMapper.java加上:
@Mapper
@Repository
注解
5.创建ProductController.java控制器演示入口
package com.example.demo.controller; import com.example.demo.dao.ProductsMapper; import com.example.demo.models.Products; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Created with IntelliJ IDEA. * User: Mason * Date: 2018/6/15 * Time: 15:45 */ @RestController public class ProductController { @Autowired ProductsMapper productsMapper; @RequestMapping(value="/ps") public String ps(){ Products products = productsMapper.selectByPrimaryKey(1); return products.toString(); } }
6.启动程序,查看演示结果
查询成功!
基础知识,记录以便查阅。