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>