1. dao中的参数一定要加@Param
List<HeadLine> queryHeadLine(@Param("headLineCondition") HeadLine headLineCondition);
**2. resultType是查询结果返回的实体类,**有参数就要加parameterType="long"就是参数的类型
<select id="queryHeadLineByIds" resultType="com.imooc.o2o.entity.HeadLine"
parameterType="long">
3. 查询使用
<where>
<if test="headLineCondition.enableStatus!=null">
and enable_status = #{headLineCondition.enableStatus}
</if>
</where>
4. foreeach使用
dao中:
List<HeadLine> queryHeadLineByIds(@Param(lineId) List<Long> lineIdList);
传入的参数是集合
xml中:
WHERE line_id IN
<foreach collection="list" item="lineId" open="(" separator=","
close=")">
#{lineId}
</foreach>
说明:item集合中每一个元素进行迭代时的别名,
index表示在迭代过程中,每次迭代到的位置,
open该语句以什么开始,
separator在每次进行迭代之间以什么符号作为分隔 符,
close以什么结束,
在使用foreach的时候最关键的也是最容易出错的就是collection属性,
该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,
主要有一下3种情况:
-
如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
-
如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
-
如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了
5. 插入使用
Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。
#{lineName}貌似可以直接使用headLine里的属性
int insertHeadLine(HeadLine headLine);
<insert id="insertHeadLine" useGeneratedKeys="true" keyProperty="lineId"
keyColumn="line_id">
INSERT INTO
tb_head_line(line_name,line_link,line_img,priority,
enable_status,
create_time,last_edit_time)
VALUES
(#{lineName},#{lineLink},#{lineImg},#{priority},
#{enableStatus},#{createTime},#{lastEditTime})
</insert>
dao调用了这个方法后,对象就会自动保存新增的id属性了。(理解)
6. update使用
<update id="updateHeadLine" parameterType="com.imooc.o2o.entity.HeadLine">
update tb_head_line
<set>
<if test="lineName != null">line_name=#{lineName},</if>
<if test="lineLink != null">line_link=#{lineLink},</if>
<if test="lineImg != null">line_img=#{lineImg},</if>
<if test="priority != null">priority=#{priority},</if>
<if test="enableStatus != null">enable_status=#{enableStatus},</if>
<if test="lastEditTime != null">last_edit_time=#{lastEditTime}</if>
</set>
where line_id=#{lineId}
</update>
7. delete使用
<delete id="deleteHeadLine">
DELETE FROM
tb_head_line
WHERE
line_id =
#{lineId}
</delete>