• 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='598@qq.com', gender='0'}
  • 相关阅读:
    停滞的代码
    民兵葛二蛋大结局
    该开始BS了
    今天写出了第一个.NetBS应用
    读源码,仿照
    MVN,老天怎么回事?
    从哪里入手
    学习Java了
    工厂方法模式与简单工厂
    转:悟透JavaScript
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/10025711.html
Copyright © 2020-2023  润新知