mybatis xml開發實戰

1、使用sql標籤和include標籤

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.asiainfo.bi.icmp.common.dao.mapper.SampleDataMapper">

  <sql id="columns">
    id,class,task_id,excute_id,data,data_time
  </sql>

  <select id="findOne" resultMap="sampleDataResMap">
    select <include refid="columns" />
    from sample_data where task_id=#{taskId} and data->'$.linkurl' = #{url}
  </select>

</mapper>

 

2、參數類型爲對象(當有多個參數時,名字用@Param註解標識,且不要寫parameterType)

int insert(@Param("sampleData") SampleData sampleData);
<insert id="insert" parameterType="com.asiainfo.bi.icmp.common.dao.pojo.SampleData">
      insert into sample_data(id,task_id,excute_id,data,data_time) values(#{sampleData.id},
      #{sampleData.taskId},#{sampleData.excuteId},#{sampleData.data},#{sampleData.dataTime})
  </insert>

 

3、參數類型爲list

int insertMany(List<SampleData> sampleDatas);
<insert id="insertMany" parameterType="list">
    insert into sample_data(id,task_id,excute_id,data,data_time) values
    <foreach collection="list" item="item" separator=",">
      (#{item.id},#{item.taskId},#{item.excuteId},
       #{item.data},#{item.dataTime})
    </foreach>
  </insert>

 

4、返回單個對象

一般的select,會返回多個對象,這時候返回值要用list類型,但是resultMap或resultType是單個對象的類型

如果能夠確定select只會返回一個對象,則返回值類型用該對象的類型

如果不能確定select只返回一個對象,但又想只返回一個對象,則可以用limit1

Urls findOne(@Param("taskId")Integer taskId, @Param("url") String url);
<!--如果不能確定返回結果只有一條,則不能用findone;這裏的做法是limit限制只返回一條-->
  <select id="findOne" resultMap="urlsResMap">
    select <include refid="columns" />
    from urls where task_id=#{taskId} and url = #{url} limit 1
  </select>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章