idea-mybatis-generator逆向⼯程⽣成代码及简单使⽤
MyBatis官⽅提供了逆向⼯程 mybatis-generator,可以针对数据库表⾃动⽣成MyBatis执⾏所需要的代码(如Mapper.java、l、POJO)。mybatis-generator 有三种⽤法:命令⾏、eclipse插件、maven插件。⽽maven插件的⽅式⽐较通⽤,本⽂也将概述maven插件的使⽤⽅式
<build>
<plugins>
<!-- mybatis-generator -->
<plugin>
<groupId&ator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!-- mybatis-generator的配置⽂件,根据情况调整位置 -->
<configurationFile>src/main/l</configurationFile>                <verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId&ator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
在src/main/resources⽬录下添加配置⽂件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN"
"/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--mysql 连接数据库jar 这⾥选择⾃⼰本地位置-->
<classPathEntry location="H:\mybatis-generate\mysql-connector-java-5.1.38.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
unicode字符编码转换器
<!-- 是否去除⾃动⽣成的注释 true:是: false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、⽤户名、密码 -->
<jdbcConnection driverClass="sql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test" userId="root"
password="dae741852">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和          NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
相渐变图片
<!-- targetProject:⽣成PO类的位置 -->
<javaModelGenerator targetPackage="com.ate.demo.bean"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射⽂件⽣成的位置
dialogs怎么读音如果maven⼯程只是单独的⼀个⼯程,targetProject="src/main/java"
若果maven⼯程是分模块的⼯程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="com.ate.demo.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接⼝⽣成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.ate.demo.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="courses">
</table>
</context>
</generatorConfiguration>
运⾏⽅式
⽣成⽂件⽬录
⽣成⽂件使⽤⽅法
example⽤来构造复杂的条件语句使⽤的,example⾥⾯包含了⼀个Criteria(他是⼀个条件集),Criteria中有许多Cretiron,cretiron之间是⽤and连接,是逻辑与关系
oredCriteria,Example内有⼀个成员叫oredCriteria,是Criteria的集合,就想其名字所预⽰的⼀样,这个集合中的Criteria是由OR连接的,是逻辑或关系
TestTableExample example = new TestTableExample();
<()java中vector用法
.andField1EqualTo(5)
.andField2IsNull();
新闻网站模板设计()
.andField3NotEqualTo(9)
.andField4IsNotNull();
List<Integer> field5Values = new ArrayList<Integer>();
field5Values.add(8);
field5Values.add(11);
field5Values.add(14);
field5Values.add(22);
<()
.andField5In(field5Values);
<()
.andField6Between(3, 7);
or()⽅法会产⽣⼀个新的Criteria对象,添加到oredCriteria中,并返回这个Criteria对象,从⽽可以链式表达,为其添加Criterion。
产⽣的动态SQL是这样的
where (field1 = 5 and field2 is null)
or (field3 <> 9 and field4 is not null)
or (field5 in (8, 11, 14, 22))
or (field6 between 3 and 7)
我们再来看下更深⼀步的实现:
TestTableExample example=new TestTableExample();
TestTableExample.Criteria ateCriteria();
criteria1.andField1EqualTo(5).andField2IsNull();
TestTableExample.Criteria ateCriteria();
criteria2.andAEqualTo(3).andCEqualTo(4); (criteria2); SqlSession sqlSession = MyBatisUtil.openSession();TestTableMapper m = tMapper(TestTableMapper.class);m.countByExample(example); //⽣成的sql语句select count(*) from demo WHERE ( field1 = 5 and field2 is null ) or ( a = 3 and c = 4 )idea配置artifacts