mybatis逆向工程
先创建java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程
逆向工程
先创建数据库表,由框架负责数据库表,反向生成如下资源
-
java实体类
-
mapper接口
-
mapper映射文件
创建逆向工程的步骤
pom配置文件
<build>
<!--逆向工程插件-->
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<!--插件的依赖-->
<dependencies>
<!--逆向工程的核心依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
创建逆向工程配置文件
文件固定 resource / 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 resource="jdbc.properties"></properties>
<!--
targetRuntime:执行生成的逆向工程的版本
MyBatis3Simple: 生成基本的CRUD(清新简洁版)
MyBatis3: 生成带条件的CRUD(奢华尊享版)
-->
<context id="DB2Tables" targetRuntime="MyBatis3Simple">
<!--数据库连接信息-->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<!--
javaBean生成策略
targetPackage:生成的包
targetProject:生成的位置
-->
<javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
<!--开启子包,上面package每个点对应一个子包-->
<property name="enableSubPackages" value="true"/>
<!--去除字段名处等 字符串空格-->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--
sql映射文件生成策略 resource下的
targetPackage:生成的包
targetProject:生成的位置
-->
<sqlMapGenerator targetPackage="com.atguigu.mybatis.mappers" targetProject=".\src\main\resource">
<!--开启子包,上面package每个 . 对应一个子包-->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--
mapper接口生成策略 java下的
type:
targetPackage:生成的包
targetProject:生成的位置
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.mappers" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--
逆向分析的表
tableName:设置数据表名,设置为* , 可以对应所有表,此时不写domainObjectName
domainObjectName:设置指定生成出来的实体类的类名
-->
<table tableName="t_emp" domainObjectName="Emp" />
<table tableName="t_dept" domainObjectName="Dept" />
</context>
</generatorConfiguration>
点击执行
在MBG生成的mapper接口中有方法 selectByExample(Example example)
意为按照条件查询,example为条件
首先创建条件对象
EmpExample empExample = new EmpExample();
通过createCriteria()
方法开启添加条件,and{BeanName}{Criteria}
方法添加条件查询,每个条件为and关系
empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNot Null();
通过将之前添加的条件通过or拼接其他and条件
empExample.or().andSexEqualTo("男");
执行mapper的selectByExample方法,获取查询到的记录
List<Emp> list = mapper.selectByExample(empExample);
选择性添加
updateBy{xxx}Selective(new {Bean}())
根据你新建的bean对象,对数据表进行可选的修改,当bean对象的属性有null的时候,表里对应的属性不进行更新
updateBy{xxx}(new {Bean}())