MyBatis3系列__02接口式编程

博客介绍了MyBatis3支持面向接口编程的做法,需更改EmployeeMapper.xml文件的namespace为新接口全类名,同时更改测试类方法。还强调了使用SqlSession的注意事项,如用完关闭、非线程安全等,以及mybatis全局配置文件和sql映射文件的作用。

hello world MyBatis3支持面向接口编程: 具体做法如下,将helloWorld中的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.mybatis.learn.dao.EmployeeMapper">
    <select id="selectEmployee" resultType="com.mybatis.learn.bean.Employee">
    select id, last_name lastName, gender, email from tbl_employee where id = #{id}
  </select>
</mapper>
复制代码

将namespace改为你新创建的接口的全类名,其中,接口如下所示:

package com.mybatis.learn.dao;

import com.mybatis.learn.bean.Employee;

public interface EmployeeMapper {
    public Employee getEmpById(Integer id);
}
复制代码

然后将测试类中的方法进行更改

 @Test
    public void test() {
        //1.从 XML 中构建 SqlSessionFactory
        // 也可以不使用xml文件来获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.从 SqlSessionFactory 中获取 SqlSession
//        SqlSession session = sqlSessionFactory.openSession();
//        try {
//            Employee employee = (Employee) // //session.selectOne("org.mybatis.example.BlogMapper.selectEmployee", 1);
//            System.out.println(employee);
//        } finally {
//            session.close();
//        }
        SqlSession session = sqlSessionFactory.openSession();
        try {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(employee);
        } finally {
            session.close();
        }
    }
复制代码

注意: 1.SqlSession代表和数据库的一次会话;用完必须关闭; 2.SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。 3.mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象(将接口和xml进行绑定) 即:EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class); 4.mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息 5.sql映射文件:保存了每一个sql语句的映射信息:将sql抽取出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值