1.mybatis提供了两种参数占位符:一般使用#{}
#{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。
${} :拼接SQL。底层使用的是 Statement ,会存在SQL注入问题。
2.SQL语句中特殊字段处理
方法一:使用转义字符,如 < 就是 < 的转义字符
方法二:CDATA
3.实体类属性名 和 数据库表列名 不一致,不能自动封装数据
使用 resultMap:定义 完成不一致的属性名和列名的映射
<!-- id:完成主键字段的映射 column:表的列名 property:实体类的属性名 result:完成一般字段的映射 column:表的列名 property:实体类的属性名 --> <resultMap id="brandResultMap" type="brand"> <result column="brand_name" property="brandName"/> <result column="company_name" property="companyName"/> </resultMap> <select id="selectAll" resultMap="brandResultMap"> select * from tb_brand; </select> 或在接口注解@ResultMap("brandResultMap")
注解开发方式
4.Mybatis参数传递
4.1 单个参数,如pojo、map等直接使用
4.2 多个参数,使用 @Param("参数名称") 标记每一个参数,在映射配置文件中就需要使用 #{参数名称} 进行占位
User select(@Param("username") String username,@Param("password") String password);
4.3参数为一个集合如数组时:使用foreach标签
<delete id="deleteByIds">
delete from tb_brand where id
in
<foreach collection="array" item="id" separator="," open="(" close=")">
#{id}
</foreach>
;
</delete>
5.