#{} 占位符 等价于 加了''
在预处理时,会把参数部分用一个占位符 ? 代替,执行sql类似下面的
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id);
select * from user where id=#{id}
${} 字符串拼接 直接拼接 没有加''
则只是简单的字符串替换,类似下面的
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
select * from user where username like '%${username}%' 这里用#{username}就不行了 相当于 '%'username'%'
优先使用 #{}。因为 ${} 会导致 sql 注入的问题
${} 会导致 sql 注入的问题
二Dao的开发
三种种dao的实现方式:
1、原始dao的开发方式
2、使用Mapper代理形式开发方式
a)直接配置Mapper代理
b)使用扫描包配置Mapper代理---->推荐使用
三测试方法
四逆向工程
mybatis 官网下载
二三四参考"参考2"