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>

 

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