MyBatis框架
框架整体解决方案:
编写SQL,预编译,设置参数,执行SQL,封装结果集
搭建环境
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
实体类
public class Employee {
private Integer id;
private String lastName;
}
dao层
package com.yang.dao;
import com.yang.bean.Employee;
import org.apache.ibatis.annotations.Select;
public interface EmployeeMapper {
//注解 @Select(" select id,last_name lastName from tbl_employee where id = #{id}")
public Employee selectEmp();
}
mybtis-config配置文件
<?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="root" />
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>
mapper的映射配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapper">
<!-- 返回值类型resultType-->
<select id="selectEmp" resultType="com.yang.bean.Employee">
select * from Blog where id = #{id}
</select>
</mapper>
测试类
package com.yang.test;
import com.yang.bean.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class EmployeeTest {
//根据XML配置文件创建SqlSessionFactory对象,全局配置
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获得 SqlSession 的实例
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
Employee employee= sqlSession.selectOne("com.yang.dao.EmployeeMapper.selectEmp",1);
sqlSession.close();
System.out.println(employee);
}
}
接口式编程
package com.yang.test;
import com.yang.bean.Employee;
import com.yang.dao.EmployeeMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class EmployeeTest {
//根据XML配置文件创建SqlSessionFactory对象,全局配置
// 根据Xml配置web文件创建SQLsessionFactory对象
// SQL映射文件 配置了每一个SQL,以及SQL的封装规则
// 将SQL映射文件注册在全局文件中
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获得 SqlSession 的实例
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
Employee employee= sqlSession.selectOne("com.yang.dao.EmployeeMapper.selectEmp",1);
sqlSession.close();
System.out.println(employee);
}
/**
* 接口式编程
* @throws IOException
*/
@Test
public void test1() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee= employeeMapper.selectEmp(1);
System.out.println(employee);
}
private SqlSessionFactory getSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
}
Mybatis框架的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>
<!--引入properties配置文件,resource引入类路径classpath:-->
<properties resource="dbConfig.properties">
</properties>
<!--setting设置 设置驼峰命名规则-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 类型别名(typeAliases)-->
<typeAliases>
<!--<typeAlias alias="emp" type="com.yang.bean.Employee"/>-->
<!--批量起别名-->
<package name="com.yang.bean"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--
将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<!--
resource 类路径下的D:\Tools\Ideawork\mybatis\src\main\resources\mapperes
url
class引用dao接口 mapper映射文件必须放在于接口放在同一目录下
package name="org.mybatis.builder" mapper映射文件必须放在于接口放在同一目录下
-->
<mapper resource="mapperes/EmployeeMapper.xml" />
</mappers>
</configuration>
简单的CRUD
开发环境搭建
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>
<!--引入properties配置文件,resource引入类路径classpath:-->
<properties resource="dbConfig.properties">
</properties>
<!--setting设置 设置驼峰命名规则-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 类型别名(typeAliases)-->
<typeAliases>
<!--<typeAlias alias="emp" type="com.yang.bean.Employee"/>-->
<!--批量起别名-->
<package name="com.yang.bean"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--
将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<!--
resource 类路径下的D:\Tools\Ideawork\mybatis\src\main\resources\mapperes
url
class引用dao接口 mapper映射文件必须放在于接口放在同一目录下
package name="org.mybatis.builder" mapper映射文件必须放在于接口放在同一目录下
-->
<mapper resource="mapperes/EmployeeMapper.xml" />
</mappers>
</configuration>
dbConfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
EmployeeMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapper">
<!-- 返回值类型resultType-->
<select id="selectEmp" resultType="com.yang.bean.Employee">
select id,last_name from tbl_employee where id = #{id}
</select>
<!--
parameterType参数类型可省略
useGeneratedKeys="true"
keyProperty="id"如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置为目标属性就 OK 了
-->
<insert id="insertEmp" useGeneratedKeys="true"
keyProperty="id">
insert into tbl_employee (last_name)values (#{lastName})
</insert>
<update id="updateEmp">
update tbl_employee set
last_name = #{lastName}
where id = #{id}
</update>
<delete id="deleteEmp">
delete from tbl_employee where id = #{id}
</delete>
</mapper>
实体类
public class Employee {
private Integer id;
private String lastName;
}
dao层
package com.yang.dao;
import com.yang.bean.Employee;
import org.apache.ibatis.annotations.Select;
public interface EmployeeMapper {
// @Select(" select id,last_name lastName from tbl_employee where id = #{id}")
public Employee selectEmp(Integer id);
public void insertEmp(Employee employee);
public void updateEmp(Employee employee);
public void deleteEmp(Integer id);
}
测试层
package com.yang.test;
import com.yang.bean.Employee;
import com.yang.dao.EmployeeMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class EmployeeTest {
//根据XML配置文件创建SqlSessionFactory对象,全局配置
// 根据Xml配置web文件创建SQLsessionFactory对象
// SQL映射文件 配置了每一个SQL,以及SQL的封装规则
// 将SQL映射文件注册在全局文件中
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获得 SqlSession 的实例
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
Employee employee= sqlSession.selectOne("com.yang.dao.EmployeeMapper.selectEmp",1);
sqlSession.close();
System.out.println(employee);
}
private SqlSessionFactory getSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 接口式编程
* @throws IOException
*/
@Test
public void test1() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee= employeeMapper.selectEmp(1);
System.out.println(employee);
}
@Test
public void add() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee=new Employee();
employee.setLastName("里斯4");
employeeMapper.insertEmp(employee);
sqlSession.commit();
}
@Test
public void del() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
// Employee employee=new Employee();
// employee.setLastName("里斯");
employeeMapper.deleteEmp(3);
sqlSession.commit();
}
@Test
public void update() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee=new Employee();
employee.setId(4);
employee.setLastName("里斯4");
employeeMapper.updateEmp(employee);
sqlSession.commit();
}
}
参数的处理
<select id="getIdAndLastName" resultType="com.yang.bean.Employee">
select*from tbl_employee where id=#{id} and last_name=#{lastName}
</select>
dao层
public Employee getIdAndLastName(@Param("id") Integer id, @Param("lastName") String lastName);
测试
@Test
public void getIdAndLastName() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Employee employee= employeeMapper.getIdAndLastName(1,"www");
System.out.println(employee);
}
Map封装
public Employee getByMap(Map<String,Object>map);
dao层
select * from tbl_employee where id=#{id} and last_name=#{lastName}测试
@Test
public void getByMap() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Map<String,Object>map=new HashMap<String, Object>();
map.put("id",1);
map.put("lastName","www");
Employee employee= employeeMapper.getByMap(map);
System.out.println(employee);
}
注意:分表,排序用${}来获取值
返回List
public List<Employee>getListByEmpNameLike(String lastName);
Mapper
<select id="getListByEmpNameLike" resultType="com.yang.bean.Employee">
select*from tbl_employee where last_name like #{lastName}
</select>
测试
@Test
public void getListByEmpNameLike() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
List<Employee> employee= employeeMapper.getListByEmpNameLike("%w%");
for (Employee employee1 : employee) {
System.out.println(employee1);
}
System.out.println(employee);
}
封装Map
// 返回map
public Map<String,Object>getEmpByIdMap(Integer id);
mapper
<!--或者resultType用map来表达-->
<select id="getEmpByIdMap" resultType="java.util.Map">
select*from tbl_employee where id=#{id}
</select>
测试
@Test
public void getEmpByIdMap() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Map<String, Object> employee= employeeMapper.getEmpByIdMap(1);
System.out.println(employee);
}
多条记录封装map
//查询多条数据封装map返回结果
@MapKey("id") //告诉mybatis封装map哪个作为主键
public Map<Integer,Employee>getEmpByLastNameLikeMap(String latsName);
mapper
<!--resultType 也可以是对象-->
<select id="getEmpByLastNameLikeMap" resultType="java.util.Map">
select*from tbl_employee where last_name like #{lastName}
</select>
测试
@Test
public void getEmpByLastNameLikeMap() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapper employeeMapper=sqlSession.getMapper(EmployeeMapper.class);
Map<Integer, Employee> employee= employeeMapper.getEmpByLastNameLikeMap("%w%");
System.out.println(employee);
}
自定义结果集映射
package com.yang.dao;
import com.yang.bean.Employee;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface EmployeeMapperPlus {
public Employee selectById(Integer id);
}
Mapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapperPlus">
<resultMap id="empResultMap" type="Employee">
<id property="id" column="id" />
<result property="lastName" column="last_name"/>
</resultMap>
<select id="selectById" resultMap="empResultMap">
select*from tbl_employee where id=#{id}
</select>
</mapper>
测试
@Test
public void test5() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapperPlus employeeMapperPlus=sqlSession.getMapper(EmployeeMapperPlus.class);
Employee employee= employeeMapperPlus.selectById(1);
System.out.println(employee);
}
resultMap关联查询
public Employee getAndEmpDept(Integer id);
mapper层
采用级联属性查询结果
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapperPlus">
<resultMap id="empResultMap" type="Employee">
<id property="id" column="id" />
<result property="lastName" column="last_name"/>
<result property="department.id" column="id"/>
<result property="department.deptName" column="dept_name"/>
</resultMap>
<select id="selectById" resultMap="empResultMap">
select*from tbl_employee where id=#{id}
</select>
<select id="getAndEmpDept" resultMap="empResultMap">
select
e.id id,e.last_name last_name,d.dept_name dept_name
from
tbl_employee e,tbl_dept d
WHERE
e.d_id=d.id
AND
e.id=#{id}
</select>
</mapper>
第二种采用association属性
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapperPlus">
<resultMap id="empResultMap" type="Employee">
<id property="id" column="id" />
<result property="lastName" column="last_name"/>
<association property="department" javaType="Department">
<id property="id" column="id"/>
<result property="deptName" column="dept_name"/>
</association>
</resultMap>
<select id="selectById" resultMap="empResultMap">
select*from tbl_employee where id=#{id}
</select>
<select id="getAndEmpDept" resultMap="empResultMap">
select
e.id id,e.last_name last_name,d.dept_name dept_name
from
tbl_employee e,tbl_dept d
WHERE
e.d_id=d.id
AND
e.id=#{id}
</select>
</mapper>
测试
@Test
public void test6() throws IOException {
//获得 SqlSession 的实例
SqlSessionFactory sqlSessionFactory=getSessionFactory();
SqlSession sqlSession=sqlSessionFactory.openSession();
// 参数传递第一个方法全类名,参数
EmployeeMapperPlus employeeMapperPlus=sqlSession.getMapper(EmployeeMapperPlus.class);
Employee employee= employeeMapperPlus.getAndEmpDept(1);
System.out.println(employee);
}
分步查询
mapper层
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.EmployeeMapperPlus">
<!--association分步查询-->
<resultMap id="empByStep" type="Employee">
<id property="id" column="id" />
<result property="lastName" column="last_name"/>
<!-- 定义单个关联的对象-->
<association property="department"
select="com.yang.dao.DepartmentMapper.selectById"
column="id"
>
</association>
</resultMap>
<select id="getEmpByStep" resultMap="empByStep">
select*from tbl_employee where id=#{id}
</select>
</mapper>
延迟加载
mybatis配置文件
<settings>
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/>-->
<settings name="jdbcTypeForNull" value="Null"/>
<settings name="lazyLoadingEnabled" value="true"/>
<settings name="aggressiveLazyLoading" value="false"/>
</settings>
定义关联集合关联查询
package com.yang.dao;
import com.yang.bean.Department;
import com.yang.bean.Employee;
public interface DepartmentMapper {
public Department selectByIdPlus(Integer id);
}
mapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yang.dao.DepartmentMapper">
<!--嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则 -->
<resultMap type="Department" id="MyDept">
<id column="did" property="id"/>
<result column="dept_name" property="deptName"/>
<!--
collection定义关联集合类型的属性的封装规则
ofType:指定集合里面元素的类型
-->
<collection property="employeeList" ofType="Employee">
<!-- 定义这个集合中元素的封装规则 -->
<id column="eid" property="id"/>
<result column="last_name" property="lastName"/>
</collection>
</resultMap>
<!-- public Department getDeptByIdPlus(Integer id); -->
<select id="getDeptByIdPlus" resultMap="MyDept">
SELECT d.id did,d.dept_name dept_name,
e.id eid,e.last_name last_name
FROM tbl_dept d
LEFT JOIN tbl_employee e
ON d.id=e.d_id
WHERE d.id=#{id}
</select>
</mapper>
自动生成代码
<?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>
<!--
targetRuntime="MyBatis3Simple":生成简单版的CRUD
MyBatis3:豪华版
-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- jdbcConnection:指定如何连接到目标数据库 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true"
userId="root"
password="123456">
</jdbcConnection>
<!-- -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- javaModelGenerator:指定javaBean的生成策略
targetPackage="test.model":目标包名
targetProject="\MBGTestProject\src":目标工程
-->
<javaModelGenerator targetPackage="com.atguigu.mybatis.bean"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sqlMapGenerator:sql映射生成策略: -->
<sqlMapGenerator targetPackage="com.atguigu.mybatis.dao"
targetProject=".\conf">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- javaClientGenerator:指定mapper接口所在的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 指定要逆向分析哪些表:根据表要创建javaBean -->
<table tableName="tbl_dept" domainObjectName="Department"></table>
<table tableName="tbl_employee" domainObjectName="Employee"></table>
</context>
</generatorConfiguration>
测试
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testMbg() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("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);
}