0条评论
还没有人评论过~
${}是properties文件中的变量占位符,它可以用于xml标签属性值和sql内部,属于字符串替换。
<!-- ${driver} 会被替换为 com.mysql.jdbc.driver -->
<dataSource type="UNPOOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
</dataSource>
${}也可以对传递进来的参数原样拼接在sql中。实际场景中,不推荐使用${},因为会有sql注入的风险。
#{}是sql的参数占位符,mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数。所以#{}是预编译处理,可以有效防止sql注入,提高系统安全性。
<setting name="mapUnderscoreToCamelCase" value="true" />
参考mybatis中文文档
参考mybatis中文文档
<if/> 、<where/>、 <set/>、 <choose/>、 <foreach/>、<when/>、 <otherwise/>、<trim/>
不同的数据库,获取自动生成的主键的方式是不同的。mysql有两种方式,代码如下
// 方式一,使用 useGeneratedKeys + keyProperty 属性
<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, pswd)
VALUE (#{name}, #{pswd})
</insert>
// 方式二,使用 `<selectKey />` 标签
<insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name, pswd)
VALUE (#{name}, #{pswd})
</insert>
来源:oschina
链接:https://my.oschina.net/u/3316877/blog/3069075