Mybatis Generator(MBG)通过丰富的配置可以生成不同类型的代码,代码包含了数据库表对应的实体类,Mapper接口类,Mapper XML文件和Example对象等。这些代码文件中几乎包含了全部的单表操作方法,使用MBG可以极大程度上方便我们使用Mybatis。 接下来介绍具体的配置过程:
1、配置 mbg.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">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="13579">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage ="com.lhk.mybatis.bean" targetProject = ".\src">
<property name ="enableSubPackages" value ="true"/>
<property name ="trimStrings" value = "true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage ="conf" targetProject =".\src">
<property name ="enableSubPackages" value ="true"/>
</sqlMapGenerator>
<javaClientGenerator type = "XMLMAPPER" targetPackage = "com.lhk.mybatis.dao" targetProject = ".\src">
<property name ="enableSubPackages" value ="true"/>
</javaClientGenerator>
<table tableName ="tb1_employee" domainObjectName ="Employee">
<property name="useActualColumnNames" value="true"/>
<generatedKey column="ID" sqlStatement="DB2" identity="true" />
<columnOverride column="DATE_FIELD" property="startDate" />
<ignoreColumn column="FRED" />
<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
</table>
<table tableName="tb1_dept" domainObjectName="Department">
<property name="useActualColumnNames" value="true"/>
<generatedKey column="ID" sqlStatement="DB2" identity="true" />
<columnOverride column="DATE_FIELD" property="startDate" />
<ignoreColumn column="FRED" />
<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
</table>
</context>
</generatorConfiguration>
2、添加 mybatis-config.xml
<?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.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="13579" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="conf/EmployeeMapper.xml" />
<mapper resource="conf/DepartmentMapper.xml" />
</mappers>
</configuration>
3、添加MyBatisTest测试类
用于执行MBG配置生成代码
@Test
public void testMbg() throws Exception
{
List
<String> warnings
= new ArrayList<>();
boolean overwrite
= true;
File configFile
= new File("E:\\java\\IDEATest\\Mybatis_MBG\\src\\conf\\mbg.xml");
ConfigurationParser cp
= new ConfigurationParser(warnings
);
Configuration config
= cp
.parseConfiguration(configFile
);
DefaultShellCallback callback
= new DefaultShellCallback(overwrite
);
MyBatisGenerator myBatisGenerator
= new MyBatisGenerator(config
,callback
,warnings
);
myBatisGenerator
.generate(null
);
}
在通过MBG生成代码之前,项目的结构为: 在使用MBG生成代码后,项目的结构为: 可以看到通过MBG自动生成了实体类,Mapper接口类,Mapper XML文件和Example对象。
4、测试自动生成的查询方法
public SqlSessionFactory
getSqlSessionFactory() throws IOException
{
String resource
= "conf/mybatis-config.xml";
InputStream inputStream
= Resources
.getResourceAsStream(resource
);
return new SqlSessionFactoryBuilder().build(inputStream
);
}
@Test
public void testSimple() throws IOException
{
SqlSessionFactory sqlSessionFactory
= getSqlSessionFactory();
SqlSession openSession
= sqlSessionFactory
.openSession();
try {
EmployeeMapper mapper
= openSession
.getMapper(EmployeeMapper
.class);
EmployeeExample example
= new EmployeeExample();
EmployeeExample
.Criteria criteria
= example
.createCriteria();
criteria
.andLast_nameLike("%e%");
criteria
.andGenderEqualTo("0");
EmployeeExample
.Criteria criteria2
= example
.createCriteria();
criteria2
.andEmailLike("%e%");
example
.or(criteria2
);
List
<Employee> selectList
= mapper
.selectByExample(example
);
for (Employee employee
: selectList
) {
System
.out
.println(employee
.getId());
}
} finally {
openSession
.close();
}
}
云 祁
认证博客专家
Flink
Spark
数据中台
我是「云祁」,一枚热爱技术、会写诗的大数据开发猿,专注数据中台和 Flink / Spark / Hive 等大数据技术,欢迎一起交流学习。