使用mybatis是多值传递问题
一、 分析
在mybatis使用时 , 默认只允许在映射接口的方法中传递一个值 , 这时在映射文件的sql语句中可以用任意的名字取值
实体User中 有name和age属性 UserMapper.java映射接口中 public void select(String aaa); UserMapper.xml映射文件中 <select> select * from user user where #{xxx} </select>
二, 三种多值传递情况解决
传递实体类中的多个数据
如果需要传递的多个值都是同一实体中的属性 , 则可以把这些数据封装在实体中再传递
实体User中 有name和age属性 UserMapper.java映射接口中 public void insert(User user); UserMapper.xml映射文件中 <insert id="insert"> insert into user valuse(#{name} , #{age}) </insert>
传递多个毫无关系的数据
- 当需要传递多个毫无关系的数据时, 可以使用map将数据进行封装
- 实际上mabytis传递数据时不管是多值还是单值 , 都是传递的一个map , 以键值对的形式存取值
直接传递多个值
如果需要传递的多个数据不属于一个实体 , 又觉得用map封装国语繁琐时, 可以使用参数的注解, 使用参数的注解之后, mybatis会自动将参数列表中的参数封装在map中
UserMapper.java映射接口中 public void insert(@param("name")String name , @Pparam("age")String age); UserMapper.xml映射文件中 <insert id="insert"> insert into user valuse(#{name} , #{age}) </insert>