zoukankan      html  css  js  c++  java
  • MyBatis

    #{}和${}:
    #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 
    如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
     
    ${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
    别名:(针对paramaterType和resultType)
    别名 映射的类型(实体类中的类型)
    _byte byte
    _long long
    _short short
    _int int
    _integer int
    _double double
    _float float
    _boolean boolean
    string String
    byte Byte
    long Long
    short Short
    int Integer
    integer Integer
    double Double
    float Float
    boolean Boolean
    date Date
    decimal BigDecimal
    bigdecimal BigDecimal
    <typeAliases>
    <!-- 单个别名定义 -->
    <typeAlias alias="user" type="cn.itcast.mybatis.po.User"/>
    <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
    <package name="cn.itcast.mybatis.po"/> 
    <!cn.itcast.mybatis.po.User起别名为User或者user;/>
    <package name="其它包"/>
    </typeAliases>
    映射中的特殊类型:
    在Orders类中加入User属性,user属性中用于存储关联查询的用户信息,因为订单关联查询用户是一对一关系,所以这里使用单个User对象存储关联查询的用户信息。
    <!-- 查询订单关联用户信息使用resultmap -->
    <resultMap type="Orders" id="orderUserResultMap">
    <id column="id" property="id"/>
    <result column="user_id" property="userId"/>
    <result column="number" property="number"/>
    <result column="createtime" property="createtime"/>
    <result column="note" property="note"/>
    <!-- 一对一关联映射 -->
    <!--
    property:Orders对象的user属性
    javaType:user属性对应 的类型
     -->
    <association property="user" javaType="cn.itcast.po.User">
    <!-- column:user表的主键对应的列  property:user对象中id属性-->
    <id column="user_id" property="id"/>
    <result column="username" property="username"/>
    <result column="address" property="address"/>
    </association>
    </resultMap>
    <select id="findOrdersWithUserResultMap" resultMap="orderUserResultMap">
    SELECT
    o.id,
    o.user_id,
    o.number,
    o.createtime,
    o.note,
    u.username,
    u.address
    FROM
    orders o
    JOIN `user` u ON u.id = o.user_id
    </select>
    association:表示进行关联查询单条记录 
    property:表示关联查询的结果存储在cn.itcast.mybatis.po.Orders的user属性中
    javaType:表示关联查询的结果类型
    <id property="id" column="user_id"/>:查询结果的user_id列对应关联对象的id属性,这里是<id />表示user_id是关联查询对象的唯一标识。
    <result property="username" column="username"/>:查询结果的username列对应关联对象的username属性。
    
    在User类中加入List<Orders> orders属性
    
    <resultMap type="user" id="userOrderResultMap">
    <!-- 用户信息映射 -->
    <id property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="birthday" column="birthday"/>
    <result property="sex" column="sex"/>
    <result property="address" column="address"/>
    <!-- 一对多关联映射 -->
    <collection property="orders" ofType="orders">
    <id property="id" column="oid"/>
          <!--用户id已经在user对象中存在,此处可以不设置-->
    <!-- <result property="userId" column="id"/> -->
    <result property="number" column="number"/>
    <result property="createtime" column="createtime"/>
    <result property="note" column="note"/>
    </collection>
    </resultMap>
    collection部分定义了用户关联的订单信息。表示关联查询结果集
    property="orders":关联查询的结果集存储在User对象的上哪个属性。
    ofType="orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。
    <id />及<result/>的意义同一对一查询。
  • 相关阅读:
    分别针对Customers表与Order表的通用查询操作
    类的继承
    kubernetes service 原理解析
    k8s生命周期-钩子函数
    深入理解Pod-初始化容器
    为 Pod 或容器配置安全性上下文
    Docker四种网络模式
    python中__new__方法详解及使用
    浅析python析构函数
    k8s中的网络
  • 原文地址:https://www.cnblogs.com/gaomanito/p/8463059.html
Copyright © 2011-2022 走看看