接口式编程

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);
    }
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,191评论 0 4
  • 前言 主题是Mybatis一级和二级缓存的应用及源码分析。希望在本场chat结束后,能够帮助读者朋友明白以下三点。...
    余平的余_余平的平阅读 5,158评论 0 12
  • 前面已经配置好了mybatis的开发环境,并且实现了一个简单的查询。这种方式是使用SqlSession实例来直接执...
    StrongZhao阅读 3,480评论 0 3
  • 有一段时间我几乎无法正常生活。我是眼睁睁地看着祖母咽气的,这和祖父不同。祖父走的很突然,我接到通知到家的时候他安安...
    tangying阅读 1,801评论 0 0
  • 原谅我渐渐少去的问候, 那种浓烈的感情不在身边,却一直存在。 我们都逐渐离开了那些青葱岁月, 好像彼此都在慢慢脱离...
    北方的南Ankara阅读 2,895评论 0 2

友情链接更多精彩内容