关于MyBatis的两种写法

Posted 汪神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于MyBatis的两种写法相关的知识,希望对你有一定的参考价值。

刚接触MyBatis是在Jike的视频中学习的,但是之后又发现和项目中的MyBatis的用法不太一致。上网找了好多资料,发现网上的教程分为两种写法:

第一种,是jike视频中的写法,写好map.xml文件之后,在MyBatis基本配置文件指定好这个map文件的位置后就直接

User user = (User) session.selectOne("selectUser", "3");

 

第二种就是 mapper接口式,叫做面向接口编程。

先定义一个UserMapper的Interface ,然后Mapper文件的namespace指向的就是这个Interface,
然后使用的时候
UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUser("jun");

(具体的使用可以参考博客:http://blog.csdn.net/mpfly/article/details/73348143)

 

第一种,selectOne就是选择一条记录,解析xml里sql,把参数绑定上去,执行sql,最后把sql返回的结果填充到Goods对象里。内部实现都是jdbc啦,只不过不用你写这些琐碎的细节了,全有mybatis搞定。

第二种,UserMapper userMapper =sqlSession.getMapper(UserMapper.class);得到了一个UserMapper的代理。核心是JDK的动态代理。你只要定义UserMapper这个接口的方法getUser就可以了,mybatis生成代理,也是实现UserMapper接口的,然后解析xml,调用SQL,返回结果给你。你自己则根本感觉不到代理的存在,感觉就是在调用UserMapper。

底层代码里,第二种其实最后还是会调用第一种的selectOne的。




以上是关于关于MyBatis的两种写法的主要内容,如果未能解决你的问题,请参考以下文章

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

关于Mybatis中使用自定义类型通过 自定义TypeHandler类型处理器进行类型转换的两种配置方案-枚举类型示例

MyBatis学习笔记 —— MyBatis获取参数值的两种方式

使用mybatis的两种方式

Spring整合MyBatis的两种方式

mybatis执行CRUD操作的两种方式配置和注解