单条件查询
用select查询数据时,如果需要用户传入的参数只有一个时,可以直接在接口代理方法中设置一个参数:
如上图的selectById(int id)
方法,定义好方法后需要在对应的映射文件中写上对应的SQL语句
只需要将对应的参数名传入#{}
中即可实现插入参数,还有一种方法是将#
改成$
,这两个的区别在于:$
代表的是先拼接字符串,再对SQL进行编译,而#
则是先预编译SQL语句,再传入参数的值,这样可以防止字符串拼接时的SQL注入问题,具体可看我的另一篇文章
JDBC解决SQL注入问题
多条件查询
当查询语句需要用户传入多个参数时,映射文件中的参数传入方式和上面一致
而在声明代理接口方法时,则有三种方法:
- 散装参数传入:
List<Brand> selectByParams(@Param("id")int id,@Param("companyName")String companyName);
在传入参数时需要在每一个参数前加上@Param
修饰,且参数名须和映射文件参数名一致
- 对象参数传入:
List<Brand> selectByParams(Brand brand);
像这样以对象作为参数时,只需要在使用该方法时,将所有参数封装到一个实例对象中即可,必须保证对象属性名和映射文件参数名一致
- Map参数传入:
List<Brand> selectByParams(Map map);
传入一个封装所有参数的map对象,将键为参数名,必须保证键名在映射文件中的参数名一致
注意当编写SQL语句时,如果条件中出现<
等符号,由于在xml文件中中<>
表示标签,因此单个<
符号会被认为是标签的左边界符,因此我们可以利用转义字符,对应符号的转义字符可上网查,还有一种方法可像这样
在需要写类似符号时,加上一个<![CDATA[]]>
标签,并在中括号内填入你想要写的符号,这些符号会被自动转义