MyBatis3-topic04,05 -接口式编程

笔记要点

/**接口式编程:
 * 1.  原生: Dao 接口-->Dao接口的实现类
 *   mybatis: Mapper --> 有一个与之对应的 XXMapper.xml
 * 2. SqlSession
 *      代表与数据库的一次会话,用完必须关闭资源;
 *3.SqlSession 和connection 一样都是非线程安全,不能声明为全局变量;
 *         每次使用都需要重新生命.
 * 4.mapper接口没有实现类, 但是mybatis 会为这个接口生成一个代理对象:
 *        (需要先将接口和XML文件进行绑定!)
 *        EmployeeMapper empMapper=openSession.getMapper(EmployeeMapper.class);
 *  5.两个重要的配置文件:
 *      mybatis的全局配置文件: 包含数据库连接池信息,事物管理器信息,系统文件的信息.....
 *      SQL映射文件: 保存了每一个SL语句的映射信息,
 */

出错分析

重新组织了工程结构后, mapper.xml内的内容改为: 
<select id="getEmpById" resultType="com.bean.Employee">...</select>. 
    resultType   记得更改为当前DAO的src下的类的路径!  

工程重新组织

本节测试代码 Test_tp04

package com.test;
import com.bean.*;
import com.dao.*;
import org.apache.*;
import java.io.IOException;
import java.io.InputStream;

public class Test_tp04 {
    //创建一个模板,直接返回一个新建的SqlSessionFactory
    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream=Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    @Test          //第四节测试,测试接口式编程
    public void test01() throws IOException{
        //1.获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  //调用模板的方法

        //2.获取一个SqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();

        try {
            //3.获取接口的实现类
            EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(mapper.getClass());
            System.out.println(employee);
        } finally {
            openSession.close();
        }
    }
}

测试demo结果展示

DEBUG 11-27 12:12:24,463 ==>  Preparing: select id,last_name lastname,gender,email from tbl_employee where id = ?   (BaseJdbcLogger.java:145) 
DEBUG 11-27 12:12:24,479 ==> Parameters: 1(Integer)  (BaseJdbcLogger.java:145) 
DEBUG 11-27 12:12:24,495 <==      Total: 1  (BaseJdbcLogger.java:145) 
class com.sun.proxy.$Proxy4
Employee{id=1, lastname='tom', email='[email protected]', gender='0'}

猜你喜欢

转载自www.cnblogs.com/zhazhaacmer/p/10025711.html
今日推荐