Mybatis框架一篇概括

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);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值