逆向工程
1. 创建一个maven工程
2. 引入依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
3. 创建逆向工程核心配置文件
<?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="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/803mybatis02" userId="root"
password="root">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成实体类的位置 -->
<javaModelGenerator targetPackage="cn.offcn.entity"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="cn.offcn.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="cn.offcn.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="department"></table>
<table tableName="employee"></table>
<table tableName="person"></table>
<table tableName="idcard"></table>
<table tableName="student"></table>
<table tableName="student_teacher"></table>
<table tableName="teacher"></table>
</context>
</generatorConfiguration>
4. 测试类
逆向工程的使用
package cn.test;
import cn.offcn.entity.Employee;
import cn.offcn.entity.EmployeeExample;
import cn.offcn.mapper.EmployeeMapper;
import cn.offcn.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class EmployeeTest {
//增加员工
@Test
public void testAddEmployee(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
Employee employee=new Employee();
employee.seteName("李晓龙");
employee.seteGender("男");
employee.seteDepartId(1);
employeeMapper.insert(employee);
session.commit();
MyBatisUtils.close(session);
}
//根据主键更新员工
@Test
public void testUpdateEmployee(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
Employee employee=new Employee();
employee.seteId(3);
employee.seteName("张曲河");
employee.seteGender("男");
employee.seteDepartId(1);
employeeMapper.updateByPrimaryKey(employee);
session.commit();
MyBatisUtils.close(session);
}
//根据其它条件更新员工
@Test
public void testUpdateEmployeeByOther(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
Employee employee=new Employee();
employee.seteId(3);
employee.seteName("李曲河");
employee.seteGender("女");
employee.seteDepartId(2);
EmployeeExample employeeExample=new EmployeeExample();
EmployeeExample.Criteria criteria = employeeExample.createCriteria();
criteria.andENameEqualTo("张曲河");
employeeMapper.updateByExample(employee,employeeExample);
session.commit();
MyBatisUtils.close(session);
}
//根据主键删除员工
@Test
public void testDeleteEmployee(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
employeeMapper.deleteByPrimaryKey(5);
session.commit();
MyBatisUtils.close(session);
}
//根据其它条件删除员工
@Test
public void testDeleteEmployeeByOther(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample=new EmployeeExample();
EmployeeExample.Criteria criteria = employeeExample.createCriteria();
criteria.andENameEqualTo("李晓龙");
criteria.andEGenderEqualTo("男");
employeeMapper.deleteByExample(employeeExample);
session.commit();
MyBatisUtils.close(session);
}
//根据主键查询员工
@Test
public void testGetEmployeeById(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
Employee employee=employeeMapper.selectByPrimaryKey(1);
System.out.println(employee);
session.commit();
MyBatisUtils.close(session);
}
@Test
//根据其它条件查询员工
public void testGetEmployeeByOther(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample=new EmployeeExample();
EmployeeExample.Criteria criteria = employeeExample.createCriteria();
criteria.andEGenderEqualTo("男");
List<Employee> employeeList=employeeMapper.selectByExample(employeeExample);
for (Employee employee : employeeList) {
System.out.println(employee);
}
session.commit();
MyBatisUtils.close(session);
}
//查询所有员工
@Test
public void testGetEmployees(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample=new EmployeeExample();
List<Employee> employeeList=employeeMapper.selectByExample(employeeExample);
for (Employee employee : employeeList) {
System.out.println(employee);
}
session.commit();
MyBatisUtils.close(session);
}
//统计表记录数
@Test
public void testCount(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample=new EmployeeExample();
long count=employeeMapper.countByExample(employeeExample);
System.out.println(count);
session.commit();
MyBatisUtils.close(session);
}
//根据其它条件查询表中的记录数
@Test
public void testCountByGender(){
SqlSession session= MyBatisUtils.getSession();
EmployeeMapper employeeMapper=session.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample=new EmployeeExample();
EmployeeExample.Criteria criteria = employeeExample.createCriteria();
criteria.andEGenderEqualTo("女");
long count=employeeMapper.countByExample(employeeExample);
System.out.println(count);
session.commit();
MyBatisUtils.close(session);
}
}