mybatis-generator介绍
mybatis-generator通过丰富的配置可以生成不同类型的代码,代码包含了
数据库表对应的实体类、Mapper接口类、Mapper.xml映射文件和Example对象
这些代码中几乎包含了全部的单表操作,可以减少很多重复工作。
1、创建generatorConfig.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>
<!-- properties用来引入属性外部文件,比如引入数据库信息 -->
<properties resource="generatorConfig.properties"/>
<!-- context用来指定一组对象生成的环境,例如要连接的数据库,
要生成数据库的类型和要处理的数据库中的表 -->
<context id="testTables" targetRuntime="MyBatis3"
defaultModelType="flat">
<!-- MySQL的分隔符 -->
<property name="beginningDelimiter" value="'"/>
<property name="endingDelimiter" value="'"/>
<!-- 来配置如何生成注释信息 -->
<commentGenerator>
<!-- 阻止生成注释,默认为false -->
<property name="suppressAllComments" value="true" />
<!-- 是否添加数据库表的备注信息,默认为false -->
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!-- jdbcConnection:数据库连接的信息 -->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.jdbcUrl}"
userId="${jdbc.user}"
password="${jdbc.password}">
</jdbcConnection>
<!-- javaTypeResolver:指定JDBC类型和Java类型的转换 -->
<javaTypeResolver>
<!--forceBigDecimals:是否将Decimal和NUMERIC类型转换
为Java类型的java.math.decimal -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- javaModelGenerator:用来控制生成实体类 -->
<!-- targetPackage:生成存放实体类的包名 -->
<!-- targetProject:指定目标项目路径-->
<javaModelGenerator targetPackage="${pojoTargetPackage}"
targetProject="${targetProject}">
<!-- 默认为false,使用 targetPackage指定的包 -->
<property name="enableSubPackages" value="false" />
<!-- trimStrings:是否对数据库的查询结果进行trim操作,默认false -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sqlMapGenerator:配置SQL映射生成器(mapper.xml) -->
<sqlMapGenerator targetPackage="${xmlTargetPackage}"
targetProject="${targetProject}">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- javaClientGenerator:配置生成的mapper接口 -->
<!-- type="XMLMAPPER" 所有的方法都在XMl中
推荐使用,接口和XML完全分离,接口中不出现SQL语句,
修改SQL不需要重新编译 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="${mapperTargetPackage}"
targetProject="${targetProject}">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表,只有在table中配置的表,才能经过上面配置生成最终的代码 -->
<!-- tableName:表名 -->
<!-- 生成全部的表 tableName="%" -->
<!-- domainObjectName:生成的实体类名,没有指定,则根据表名来生成 -->
<table tableName="user" domainObjectName="User">
<!-- generatedKey:用来指定生成的主键
会在Insert语句中添加 selectKey标签 -->
<generatedKey column="id" sqlStatement="MySql"/>
</table>
<table tableName="orders" domainObjectName="Oeders"></table>
</context>
</generatorConfiguration>
2、创建generatorConfig.properties属性文件,
#mysql
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/mybatis
jdbc.user=root
jdbc.password=root
#指定项目路径
targetProject=src/main/java
#存放实体类的包名
pojoTargetPackage=com.wxx.pojo
#存放Mapper接口的包名
mapperTargetPackage=com.wxx.mapper
#存放Mapper.xml的包名
xmlTargetPackage=com.wxx.mapper
3、在pom.xml文件下添加mybatis-generator依赖
<!-- mybatis生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
</dependency>
4、在pom.xml文件添加插件配置
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
</dependencies>
<configuration>
<!--配置文件的路径-->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
5、执行maven命令 mvn mybatis-generator:generate
当前项目必须执行过mvn install命令,将当前项目安装到本地仓库,否则会
找不到当前项目的依赖。
在pom.xml文件中邮件Run AS ->Maven build选项
执行成功,刷新项目,可以看到生成的代码
7、代码测试
Example封装查询条件
private UserMapper mapper;
//查询所有用户信息
public List<User> findUsers() {
return mapper.selectByExample(null);
}
public List<User> findUsersByCondition(String userName, String sex) {
//封装用户查询条件的Example
UserExample example = new UserExample();
//创建Criteria,用来封装查询条件
Criteria criteria = example.createCriteria();
criteria.andUserNameLike("%"+userName+"%");
criteria.andSexEqualTo(sex);
return mapper.selectByExample(example);
}
版权声明:本文为qq_27046951原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。