MyBatis接口式编程(SqlSession直接调用API向接口转变)

package com.atguigu.mybatis.dao;

import com.atguigu.mybatis.bean.Employee;

/**
 * @Author 谢军帅
 * @Date2019/11/11 16:16
 * @Description
 */
public interface EmployeeMapper {

    /**
     *  根据id查员工
     * @param id
     * @return
     */
    public Employee getEmpById(Integer id);
}

上一节的代码中,直接使用SqlSession对象在增删改查时,在传参时,是一个Object类型;传入的参数错误时,实现不了相应的功能。

接口是从数据库查询数据封装成对象,Sql映射文件也是查询数据库返回封装的对象;MyBatis实现接口与SQL映射文件动态绑定

这时SQL映射文件的namespace就不能随便写了,要指定为接口的全类名。

接口中有一个根据id查询员工的方法,对应SQL映射文件中的SQL,将SQL的id改为方法的id(也就是方法名)。

接口的好处:

1.接口规定的方法拥有更强的类型检查。

2.有明确的返回值。

3.MyBatis使用代理实现接口的实现类的创建。

测试代码:

public class MyBatisTest {

    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return  new SqlSessionFactoryBuilder().build(inputStream);
    }

    @Test
    public void test2() throws IOException {
        //1.获取SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

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

        //3.之前是直接调用增删改查的API,现在接口和Sql有了绑定
        //使用sqlSession对象得到接口的实现类对象
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

        Employee employee = employeeMapper.getEmpById(1);
        System.out.println(employee.getClass());
        System.out.println(employee);
        sqlSession.close();
    }
}

猜你喜欢

转载自www.cnblogs.com/xjs1874704478/p/11836994.html
今日推荐