- #{}和${}的区别是什么
#{}:预编译处理,解析传递进来的参数数据,会将参数加上引号,可以有效防止sql注入,提高系统安全性
${}:字符串替换,对传递进来的参数原样拼接在sql中,有sql注入的风险
mybatis每一个xml映射文件都有一个dao接口对应,dao接口里的方法可以重载吗
不能。dao接口就是mapper接口,mapper接口没有实现类,调用mapper接口寻找下xml映射文件对应的sql是通过接口全限名+方法名来寻找的。接口权限名就是xml映射文件配置的namespace,方法名就是xml映射文件中每一个sql的id,因此不能重载如何向mapper中传递多个参数
1.将多个参数封装到map中,在将map作为参数传入,在xml中根据map的key,通过#{key}或${key},来获取参数值
2.用@param注解来修饰传入的参数,在xml中根据参数名,通过#{参数名}或${参数名},来获取参数值当实体类中属性名和表中的字段名不一样时,怎么处理
1.通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致
2.通过<resultmap>
来映射字段名和实体类属性名的对应关系