zoukankan      html  css  js  c++  java
  • mybatis简单用法

    1、resultType 和 resultMap

    引言:

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
    在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
    ①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
    ②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

    实例:

    <select id="selectUid" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select
    distinct uid
    from aimo_bloger_account
    </select>

    刚开始的时候只是想查询出uid的一个list,但存储在List<Integer> uIds = new ArrayList<Integer>();中后,发现无法用for(Integer uId:uIds)遍历

    报错语句:cannot be cast to java.lang.Integer

    接下来我将 uIds  也就是这个list用toString打印了出来,发现打印出的list里面存的是对象而不是uid,最后找出是resultMap的问题

    修改后:

    <select id="selectUid" resultType="INTEGER" parameterType="java.lang.Integer" >
    select
    distinct uid
    from aimo_bloger_account
    </select>

    这样就可以用for(Integer uId:uIds)遍历了。

    2、insertSelective 和 insert

    在mybatis自动生成的XML文件中会出现insertSelective 和 insert这两个方法,这两个方法区别在于用insert插入数据时不能有字段为空,而用insertSelective 插入数据时字段可以为空;同样的在update中也有这样的情况。

    3、foreach用法

    在查询数据时经常会用到where in这种语句,就是指输入的参数可能是一个list。同样的mybatis也有对应的<foreach>标签

    实例:

    <select id="selectBySource" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select uid
    from aimo_qd_data
    where qd_num in
    <foreach collection="list" index="index" item="item" open="("
    separator="," close=")">
    #{item}
    </foreach>
    </select>

    foreach元素的属性主要有 item,index,collection,open,separator,close。

    item表示集合中每一个元素进行迭代时的别名.

    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.

    open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.

    close表示以什么结束.

  • 相关阅读:
    JDBC第一部分
    java mysql学习第三部分
    java mysql 第六部分
    java mysql学习第五部分
    java mysql学习第二部分
    java mysql学习第一部分
    元注解
    改良之前写的模拟栈代码
    java中如何自定义异常
    java中的语法规则
  • 原文地址:https://www.cnblogs.com/banma/p/6346808.html
Copyright © 2011-2022 走看看