Ch04 Sql参数
Yang Haoran 10/25/2019 JavaMybatis
# Sql参数
向sql语句中传入多个参数:
在接口中指定参数

注解中的值必须要和xml文件中一样





# #和$的区别
#占位符:
语法格式:#{}
1)mybatis处理这样的占位符是用PrepareStatement,执行效率高,并且可以防止sql注入
2)#{}往往作为列的值使用,一般在等号右侧,#{}位置的值是和数据类型有关的
$占位符:
语法格式:${}
1)mybatis处理这样的占位符是用Statement对象,直接把参数和sql语句作为字符串连接起来
2)效率低,安全性不好,有sql注入的风险
3)数据是原样使用的,不会区分数据类型
4)常用表明或者列名,在保证安全的情况下可以使用
用法和#几乎一样,但是必须指定@Param和在拼接String的时候记得加引号,如name='zhangsan'
在order by之后就只能用${},因为用#的话字符串会自动加引号
# like模糊查询

# 动态SQL
动态sql:同一个dao方法,根据不同的条件可以表示不同的sql语句,主要是where条件有变化
一般在多条件查询的时候使用动态sql
使用mybatis提供的标,实现动态sql的能力:主要 if, where, foreach, sql。






