zoukankan      html  css  js  c++  java
  • Mapper.xml映射文件

    查询订单关联查询用户:

    使用resultType,ordersCustom可以通过继承orders获得其属性,再添加我们需要的用户字段.

    使用resultMap,orders表中通过封装user对象来关联用户.

    Mapper.xml映射文件

    它定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心文件.

    2.1 parameterType(输入类型)

    2.1 .1#{}与${}    #{}:表示占位符?,它可以防止sql注入,它会把SQL语句和参数发到数据库,匹配数据库表的字段是否一致.括号内最好填写实体类属性.

    2.1.2  ${value}:表示拼接字符,实现sql拼接,所以无法防止sql注入.例如模糊查询时:'%${value}%',parameterType="user"括号里可写其字段名称如'%${username}%'  

    又例如将列名通过sql传入,对列名进行排序.order by ${columnName}.-

    2.1.3 传递pojo类,使用ognl表达式解析字段的值

    <!—传递pojo对象综合查询用户信息 -->

    <select id="findUserByUser" parameterType="user" resultType="user">

       select * from user where id=#{id} and username like '%${username}%'

    </select>

    2.1.4 传递pojo包装对象:定义包装对象查询条件(pojo)以类组合的方式包装起来

    public class QueryVo(){  private User user;          //自定义用户扩展类   private UserCustomer usercustom;}

    mapper.xml映射文件:

    <select id="findUserList" parameterType="queryVo" resultType="user">

    select*from user where username=#{user.username} and sex =#{user.sex}       </select>

    说明:mybatis底层通过ognl从pojo获取属性值#{user.username} ,user为包装类对象的属性,queryVo是别名,即包装类对象类型.

    2.1.5 传递hashmap      括号里为hashmap的key

    <select id="findUserByHasmap" parameterType="hashmap" resultType="user">
    select*from user   where id=#{id} and username like '%${username}%    </select>

    2.2 resultType(输出类型)   

    简单类型:int/string/float   自定义的pojo:表示单条记录所映射的pojo类型,映射要求:sql查询的列名和pojo的属性名一致

    2.2.1 输出简单类型

    mapper.xml

    <select id="findUserCount" parameterType="queryUserVo" resulttype="int">  select count(*) from user
    where username like '%${user.username}%'and sex=#{user.sex} </select>

    mapper.java-----输出pojo对象和列表sql定义的resultType是一样的.session.selectOne方法和session.selectList方法

    public int findUsercount (QueryUserVo queryUserVo) throws Exception;

     2.2 resultMap(还可实现延迟加载功能)

    resultMap当列名和属性名不一致时,可以通过resultMap定义列名和属性名的映射关系,完成映射.还可实现(一对一/一对多)

    UserMapper.xml
    <select id="findUserByResultMap" parameterType="int" resultType="queryUserResultMap"> select id id_,username username_,birthday birthday_,sex sex_,address address _ from User where id=#{id} </select>
    <!-- 使用resultMap将列名和pojo的属性值作一个对应关系,完成映射
    id:唯一标识 一个元素
    type:最终映射的pojo类型
    -->
    <resultMap type="user" id="queryUserResultMap">
        <!-- id标识 查询结果集中唯一标识列
        column:结果集中唯 一标识 的列名
        property:将唯一标识 的列所映射到的type指定的pojo的属性名
         -->
        <id column="id_" property="id"/>
        <!-- 如果结果集有多个列组合成一个唯 一标识,定义两个id标签 -->
        <!-- result表示:普通列 -->
        <result column="username_" property="username"/>
        <result column="birthday_" property="birthday"/>
        <result column="sex_" property="sex"/>
        <result column="address_" property="address"/>

    <association property="user" javaType="cn.itcast.mybatis.po.User">
    <!-- id:用户信息的唯一标识
    result:用户信息列
    property:将关联查询的列映射到user的哪个属性中
    -->
    <id column="user_id" property="id"/>
    <result column="username" property="username"/>
    <result column="address" property="address"/>

    </association>

    </resultMap>

    userMapper.java
    public User findUserByResultMap(int id) throws Exception;

  • 相关阅读:
    如何使用Oracle的Decode函数进行多值判断
    EXP/IMP 命令参数【转】
    EXISTS 的語法【转】
    Oracle10g SQL tune adviser简单介绍【转自ITPUB zhouwf0726】
    EXPDP/IMPDP 参数中文解释【转】
    oracle 中spfile和pfile简介【转自 henli 】
    Oracle NUMBER类型细讲
    ASP.NET的gridview设置数据格式(DataFormatString="{}")与 String.Format 使用总结 .
    asp.net更改文件夹名称及新建文件夹及删除文件夹
    Decimal转换成¥:123.00格式后再转换成Decimal格式的方法
  • 原文地址:https://www.cnblogs.com/wwwzzz/p/8276160.html
Copyright © 2011-2022 走看看