点击上面  免费订阅本账号!

本公众号主要推送javaweb开发相关技术,基础知识点,同时会深入剖析复杂的问题,分享一些优秀的框架,大型项目经验,当今最流行的Javaweb技术,热点科技新闻,招聘信息,生活乐趣等等。点击上方的蓝字,这样您每天可以看到更多的java知识和资讯!完全是免费订阅,请放心关注。

1、#{}和${}的区别:

        #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
        如果接收简单类型,#{}中可以写成value或其它名称。
        #{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

        ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。
        ${}接收输入参数,类型可以是简单类型,pojo、hashmap。
        如果接收简单类型,${}中只能写成value。
        ${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

2、selectOne和selectList的区别:
        selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。

        selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。
        如果使用selectOne报错:
        org.apache.ibatis.exceptions.TooManyResultsException:
        Expected one result (or null) to be returned by selectOne(), but found: 4

3、在映射文件中通过parameterType指定输入参数的类型。

4、在映射文件中通过resultType指定输出结果的类型。

5、resultType:

使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,

需要增加列名对应的属性,即可完成映射。

如果没有查询结果的特殊要求建议使用resultType。

6、resultMap:

需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,

使用resultMap可以完成将关联查询映射pojo的属性中。

resultMap可以实现延迟加载,resultType无法实现延迟加载。

6.1、resultMap:

使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。

association:

作用:将关联查询信息映射到一个pojo对象中。

场合:为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,

比如:查询订单及关联用户信息。

使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap

collection:

作用:将关联查询信息映射到一个list集合中。

场合:为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,

比如:查询用户权限范围模块及模块下的菜单,

可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,

这样的作的目的也是方便对查询结果集进行遍历查询。如果使用resultType无法将查询结果映射到list集合中。

7、友情链接

Mybatis入门例子:

http://blog.csdn.net/javawebrookie/article/details/52654526

mybatis官网:

http://www.mybatis.org/mybatis-3/zh/index.html

点击阅读全文阅读"Oracle事务和Spring事务区别”

有人用微信聊天,有人却在微信中学习,成长。下面是2016最HOT IT公众号,赶快试试新的关注方法吧!


关注方式
★长按二维码,选择“识别图中二维码”进行关注。

 没看够?更多好文在阅读原文

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐