qq_39497330
逝水乄流年
2017-09-28 03:13
采纳率: 42.9%
浏览 5.1k

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

这个是我的实体类

 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条回答 默认 最新

  • qq_33427422
    子系天下 2017-09-28 03:32

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

    点赞 评论
  • qq_35443465
    所爱隔山海i 2017-09-28 03:32

    public List selsctByWhere(Map mapParams);

    点赞 评论
  • Amo_lt
    Amo_lt 2017-09-28 03:33

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

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

    点赞 评论
  • w214019153
    suk1M 2017-09-28 03:39

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

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

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

    点赞 评论
  • KayLoveJie
    一叶知秋Plus 2017-09-28 03:59

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

    点赞 评论
  • sun1021873926
    夕阳雨晴 2017-09-28 05:04

    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>
    
    点赞 评论
  • wsbgmofo
    猴样鬼相 2017-09-28 05:40

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

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

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

    点赞 评论
  • wsbgmofo
    猴样鬼相 2017-09-28 05:41

    我去 XML的信息怎么没有了

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

    点赞 评论
  • sj18182656342
    黄河默默 2017-09-28 06:37

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

    点赞 评论
  • u010721688
    js1688888888 2017-09-28 07:19

    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

    点赞 评论
  • loveMaitekai
    IT珂学家 2017-09-29 01:26

    要看是一对多还是多对一等关系,在resultType/resultMap写类型即可,查询时也不建议使用 select * from,应用 select (name,age.......)from,这样可以减少高并发带来问题

    点赞 评论
  • qq_38316918
    一只小T 2017-09-30 06:12

    直接在Mapper方法里面加上@Param("")注解就好了呀,“”中写入你的参数名就ok了

    点赞 评论

相关推荐