1.如果传递的单个字符串的话,这样写
queryByWhereStr(@Param("str")String mes)
<select id="queryByWhereStr" resultType="com.book" parameterType="java.lang.String">...${str}...</select>
也可以写成这样,xml中直接参数类型直接为对象。
public void delete(String id);
<delete id="delete" parameterType="com.book">
delete from book where id
= #{id}
</delete>
2.转义符
< <
> >
<![CDATA[ ><]]>
3.like
and name like CONCAT('%',#{name},'%')
and name = '%${name}%'
4.转为数字,截取
select max(cast(substr(record_num,strpos(record_num,'-')+1) as integer)) as val
from book
max()最大
cast('123' as integer) 字符串转为数字
substr('a123',1) 截取字符串
strpos('a_111','-') -的位置
5.MySQL的多表查询(笛卡尔积原理)
注意:列名最好使用表别名来区别。

6.参数为list
public List<Con> search(@Param("arr")ArrayList<Map<String, Object>> arr);
select id from con
<where>
<foreach item="item" index="index" collection="arr">
<if test="item != null and item.searchValue!=null and item.searchValue!=''">
<choose>
<when test="item.searchType =='string'">
${item.searchRelation} lower(h.${item.searchName}) like lower(CONCAT('%','${item.searchValue}','%'))
</when>
<when test="item.searchType =='double'">
${item.searchRelation} h.${item.searchName} = ${item.searchValue}
</when>
<otherwise>
${item.searchRelation} h.${item.searchName} = #{item.searchValue}
</otherwise>
</choose>
</if>
</foreach>
</where>