接口式编程

MyBatis接口式编程

一、原始方法:

1.编写sql映射文件



    

2.通过sql映射文件中namespace和id属性来定位Sql的位置,使用SqlSession对象的selectOne方法传递需要的参数arg并执行指定位置的Sql语句。

public class MyBatisTest{
    public void MyTest(){
        String resource = "mybatis-config.xml";
        IntputStream intputStream = Resources.getResourceAsStream();
        SqlSessionFactory factory = newSqlSessionFactoryBuilder().bulid(intputStream);
        SqlSession sqlSession = factory.openSession();
        /** selectOne(String statement, Object parameter):
         *     statement :即sql映射文件中的namespace和id构成:namespace.id
         *     parameter :传递给sql映射文件的值
         */
        Product p = sqlSession.selectOne("org.test.example.ProductMapper.selectProduct", 1L);
    }
}

该方法直接通过sql映射文件中namespace和id属性来定位Sql的位置,要使用不同的方法,要改变id的值,看起来很不简洁,不够面向对象。

二、接口式编程

1.创建Mapper接口,并定义一个getProductById方法,用来通过id获取product对象。

public interface ProductMapper {
    Product getProductById(Long id);
}

2.sql映射文件中的namespace属性为Mapper接口的全限定名,id为Mapper接口中对应的方法



    

3.调用sqlSession对象中的getMapper(Class type)方法来绑定Mapper接口,并获取Mapper对象。Mapper对象拥有接口中的方法,可直接使用,例如:使用getProductById方法从数据库中获取 id= 1 的Product对象。

public class MyBatisTest{
    public void MyTest(){
        String resource = "mybatis-config.xml";
        IntputStream intputStream = Resources.getResourceAsStream();
        SqlSessionFactory factory = newSqlSessionFactoryBuilder().bulid(intputStream);
        SqlSession sqlSession = factory.openSession();
        /** getMapper(Class type)
            type: Mapper interface class.传入Mapper接口class绑定接口
         */
        ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
        Product p = mapper.getProductById(1L);
    }
}

总结:比起原始方式,接口式编程的方法调用更加直观,更加面向对象,提高了可读性和可操作性。

你可能感兴趣的:(接口式编程)