zoukankan      html  css  js  c++  java
  • Mybatis的mapper.xml文件详解

    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入门例子

         mybatis官网

  • 相关阅读:
    黑马程序员面向对象09天1
    一键安装LNMP
    多屏互动技术
    阿里云CentOS 64位解决kernel2.6.32220.13.1.el6.x86_64 has missing requires错误
    listview的onItemClickListener失效
    在阿里云主机上基于CentOS用vsftpd搭建FTP服务器(赚)
    asp.net关于在线支付的实现过程
    C#关闭登录窗体,显示主窗体
    winform 刷新父窗体(转)
    用代码生成器生成的DAL数据访问操作类 基本满足需求了
  • 原文地址:https://www.cnblogs.com/pingxin/p/p00044.html
Copyright © 2011-2022 走看看