mybatis中xml遇到 传入多个参数怎么办 10C

这个是我的实体类

 public class User {
    private int id;//编号
    private String name;//姓名
    private String age;//年龄
    private String sex;//性别
    private String height;//身高
    private String weight;//体重
    private String address;//家庭住址
    }

这个是我的Mapper接口

 /**
     * 根据条件查询用户
     * @param column 要查询的列名
     * @param Where 查询条件
     * @return 查询到的集合类
     */
public List<User> selsctByWhere(String column,String Where);

这个是xml对应要写的《SQL语句和传参,形参》

 <!-- 根据条件查询用户************************** -->
  <select id="selsctByWhere"  >

  </select>

有没有java大神,求解答

12个回答

Mybatis的Dao接口采用@Param注解进行多参数传值,可参考这篇文章。http://blog.csdn.net/sun1021873926/article/details/75138982

    /**
     * 获取所有知乎用户资料的集合
     * 
     * @return
     */
    public List<User> queryAll(@Param(value = "start") int start, @Param(value = "size") int size);
    <select id="queryAll" resultMap="userResultMap">
        select * from user limit ${start},${size}
    </select>
sun1021873926
夕阳雨晴 import org.apache.ibatis.annotations.Param;
接近 3 年之前 回复

看一下mybatis映射实体那一部分,是可以直接映射进去的

public List selsctByWhere(Map mapParams);

https://www.2cto.com/database/201409/338155.html

可以在mapper接口中的参数加上@param(“column”)String column,@param(“Where”)String Where

把参数封装成pojo自定义对象,然后在中指定parameterType="pojo全路径",resultType=“User包的全路径即可”,

parameterType 指的是输入参数类型
resultType 指的是返回参数类型

mybatis 的mapper代理模式应该不支持一次输入多个参数,一般用自定义pojo对象封装或者Map封装参数

实例化一个Mapmap 把你想要传入的值put进去 然后将selsctByWhere的方法参数设成Mapmap,直接映射到你的xml文件中就行了(xml中标签中设置属性resultType 为java.util.Map类型就可以了)

Mapper设置参数类型为一个map,如下:
List getBodyPartCompare(Map params);
XML中的mybatis如下:

select * from a where a.b = #{c}

这里有个parameterType,标识接受参数的类型,设置为Java.util.Map就是接受一个map参数,resultType表示查询到的结果以什么类型返回
SQL里面根据#{}来取值,{}里面的是map中的key

我去 XML的信息怎么没有了

select id="getBodyPartCompare" parameterType="java.util.Map" resultType="Bodypartcompare"
/select

这个 简单 你去弄清楚 mybitas 里面 #与$的区别 一个是占位的预编译 一个是直接传入

xml 里面 parameterType 后面的值可以为任何类的地址,例如java.lang.String 当然也可以 是 XXX.User 就是你的user类的className , 使用的时候 就直接对照user里面的字段使用
例如: ${id} #{name} $ 和# 是有区别的, #会生成单引号,一般代表的是非数字类型,$不生成任何其他字符, 在这之前你的user类需要做的是 给每个字段 生成 get set 方法
eclipse 快捷键是 ALT+SHIFT+S 选择 getters and setters 这个选择项,另外推荐 user类里面的 数据类型使用包装类,例如 int 改为 Integer 因为数据库里面可能返回null 而int类型不允许为null

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问