大连城市建设管理局网站,现在的网络推广怎么做,阿里云做网站视频无法播放,如何做一个公司的网站Param 注解主要用于 MyBatis 进行参数传递时给 SQL 语句中的参数 起别名#xff0c;通常用于 多参数 方法#xff0c;使参数在 XML Mapper 文件或注解 SQL 语句中更清晰易用。 1. 基本用法
在 Mapper 接口中使用 Param 来为参数命名#xff0c;避免 MyBatis 解析时出现参数…Param 注解主要用于 MyBatis 进行参数传递时给 SQL 语句中的参数 起别名通常用于 多参数 方法使参数在 XML Mapper 文件或注解 SQL 语句中更清晰易用。 1. 基本用法
在 Mapper 接口中使用 Param 来为参数命名避免 MyBatis 解析时出现参数名丢失的问题尤其是多个参数时。
示例查询用户
Mapper
public interface UserMapper {Select(SELECT * FROM users WHERE id #{userId})User findUserById(Param(userId) Long id);
}解释 Param(userId) 给方法参数 id 取别名 userIdSQL 语句 #{userId} 通过 MyBatis 解析参数值。 2. 多参数使用 Param
如果方法有 多个参数MyBatis 默认无法识别参数名必须使用 Param 指定。
示例根据用户名和邮箱查询用户
Mapper
public interface UserMapper {Select(SELECT * FROM users WHERE username #{username} AND email #{email})User findByUsernameAndEmail(Param(username) String username, Param(email) String email);
}相当于 SQL
SELECT * FROM users WHERE username Tom AND email tomexample.com;3. Param 在 XML 中使用
如果使用 XML 方式编写 SQL同样需要 Param 进行参数映射。
示例XML 配置
Mapper 接口
Mapper
public interface UserMapper {User findUserByName(Param(name) String name);
}UserMapper.xml
select idfindUserByName parameterTypestring resultTypeUserSELECT * FROM users WHERE username #{name}
/select#{name} 对应 Param(name)MyBatis 能正确解析参数。 4. 适用于 INSERT、UPDATE、DELETE
示例更新用户信息
Update(UPDATE users SET email #{email} WHERE username #{username})
void updateUserEmail(Param(username) String username, Param(email) String email);调用
userMapper.updateUserEmail(Tom, newemailexample.com);执行的 SQL
UPDATE users SET email newemailexample.com WHERE username Tom;5. 适用于 IN 查询列表参数
如果 SQL 需要 IN 语句Param 也可以用于传递 List。
示例批量查询用户
Select(scriptSELECT * FROM users WHERE id IN foreach collectionids itemid open( separator, close)#{id}/foreach /script)
ListUser findUsersByIds(Param(ids) ListLong ids);调用
ListLong userIds Arrays.asList(1L, 2L, 3L);
ListUser users userMapper.findUsersByIds(userIds);执行的 SQL
SELECT * FROM users WHERE id IN (1, 2, 3);6. 适用于 Map 作为参数
如果方法参数是 MapParam 可以简化参数获取。
示例传递 Map 查询
Select(SELECT * FROM users WHERE username #{param.username} AND email #{param.email})
User findByMap(Param(param) MapString, Object param);调用
MapString, Object paramMap new HashMap();
paramMap.put(username, Tom);
paramMap.put(email, tomexample.com);User user userMapper.findByMap(paramMap);执行的 SQL
SELECT * FROM users WHERE username Tom AND email tomexample.com;7. 适用于对象参数拆分对象字段
如果参数是对象可以直接使用 #{对象.字段} 访问属性但 Param 仍然可用于 明确参数名称。
示例传递 User 对象
Insert(INSERT INTO users(username, email) VALUES(#{user.username}, #{user.email}))
void insertUser(Param(user) User user);调用
User user new User(Alice, aliceexample.com);
userMapper.insertUser(user);执行的 SQL
INSERT INTO users(username, email) VALUES(Alice, aliceexample.com);总结
用法示例适用场景单个参数Param(userId) Long id传递单个参数避免 SQL 中参数混乱多个参数Param(username) String name, Param(email) String email传递多个参数保证 SQL 解析正确XML 方式#{name} 对应 Param(name)XML 中映射参数列表参数Param(ids) ListLong idsIN 查询Map 参数Param(param) MapString, Object传递多个参数简化方法参数列表对象参数Param(user) User user直接使用对象字段 什么时候必须用 Param
✅ 必须用 Param 的情况
多个参数否则 MyBatis 可能无法正确解析SQL 中参数命名和方法参数不同XML 方式参数需要手动映射List/Map 参数用于 IN 查询或动态 SQL
❌ 不需要 Param 的情况
只有 一个参数 时可以直接使用 #{参数名}参数是 对象可以直接 #{对象.字段} 访问 总结 Param 主要用于 多参数方法保证 MyBatis 正确解析 SQL 参数提高可读性和维护性。