美文网首页
接口式编程

接口式编程

作者: 寒风凛凛 | 来源:发表于2018-06-15 23:54 被阅读0次

MyBatis接口式编程

一、原始方法:

1.编写sql映射文件

<!-- sql映射文件 -->
<mapper namespace="org.test.example.ProductMapper">
    <select id="selectProduct" resultType="mytest.dao.Product">
        SELECT * FROM product p WHERE p.id = #{id};
    </select>
</mapper>

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接口中对应的方法

<!-- sql映射文件 -->
<mapper namespace="mytest.dao.ProductMapper">
    <select id="getProductById" resultType="mytest.dao.Product">
        SELECT * FROM product p WHERE p.id = #{id};
    </select>
</mapper>

3.调用sqlSession对象中的getMapper(Class<T> 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<T> type)
            type: Mapper interface class.传入Mapper接口class绑定接口
         */
        ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
        Product p = mapper.getProductById(1L);
    }
}

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

相关文章

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • 二,Lambda表达式入门--函数式编程与函数式接口

    一,函数式编程: 函数式编程是基于函数式接口并使用lambda表达的编程方式 函数式编程理念是将代码作为可重用数据...

  • Java lambda表达式

    1. Java函数式接口 Java实现函数式编程的方式是函数式接口(functional interface),函...

  • 从源码角度学习java函数式编程

    Java 函数式编程 简单来说,函数式编程就是被注解@FunctionalInterface修饰的接口。 那么,函...

  • Java8系列:神奇的函数式接口

    01 函数式接口是什么? 有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambd...

  • 接口式编程

    MyBatis接口式编程 一、原始方法: 1.编写sql映射文件 2.通过sql映射文件中namespace和id...

  • java8函数式接口

    一、函数式接口 1、函数式接口在java中是指:有且仅有一个抽象方法的接口,函数式接口,即适用于函数式编程场景的接...

  • java 函数式编程(2)

    在 JDK8 提供函数式接口,这样 java 这门语言也成为同时支持命令式编程、面向对象编程以及函数式编程的多范式...

  • mybatis实战教程(三)-实现数据增删改查(CRUD)

    前面我们讲了如何搭建mybatis开发环境以及采用接口式编程,基于接口式编程的基础上来讲一下如何通过mybatis...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

网友评论

      本文标题:接口式编程

      本文链接:https://www.haomeiwen.com/subject/vphveftx.html