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>