对于单个参数而言, 可以直接写 #{param}, 这里的占位符名称没有限制, 反正就一个参数一个占位符, 不需要指定名称
对于多个参数, 有常用的四种方式
根据位置排序号
- public interface UserDao {
- public Integer addUser(String username, String password);
- }
对应 mapper 文件中的片段
- <insert id="addUser">
- <!-- 按照参数位置从 param1 开始排序 -->
- insert into users(username, password) values(#{param1}, #{param2})
- </insert>
POJO 对象传入
- public interface UserDao {
- public Integer addUser(String username, String password);
- }
对应 mapper 文件中的片段
- <insert id="addUser">
- <!-- 根据属性名访问数据 -->
- insert into users(username, password) values(#{username}, #{password})
- </insert>
Map 对象传入
- public interface UserDao {
- // mapper 中 #{} 则通过 map 中的 key 访问
- public Integer addUser(Map<String, Object> map);
- }
对应 mapper 文件中的片段
- <insert id="addUser">
- insert into users(username, password) values(#{username}, #{password})
- </insert>
@Param 注解 (Map 对象的另一种形式)
- public interface UserDao {
- // 注解中的值就是 map 的 key
- public Integer addUser(@Param("name")String username, @Param("word")String password);
- }
对应 mapper 文件中的片段
- <insert id="addUser">
- insert into users(username, password) values(#{name}, #{Word})
- </insert>
来源: http://www.bubuko.com/infodetail-3416742.html