MyBatis查询定义resultType="java.util.Map"

本文介绍了在MyBatis中使用resultType="java.util.Map"的情况,解释了如何通过这种方式简化多表联查的配置,直接获取属性值,以及在接口定义、XML配置、请求处理和页面参数解析过程中的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis 的每一次查询映射的返回类型都是 resultMap,查询的时候会将数据库中列数据复制到对象的相应属性上。

当我们返回类型属性是 resultType 的时候,MyBatis对自动的把对应的值赋给 resultType 所指定对象的属性。

所以当 resultType="java.util.Map" 时,不用在多表关联中配置对应的关系,SQL随意写,直接获得返回的属性值。

多表联查比较方便的 ~

 1.接口的定义

List<Map<String, Object>> selectProduct(@Param("userId") long userId,
          @Param("page") Integer page,@Param("limit") Integer limit);
		

2.XML

<select id="selectProduct" resultType="java.util.Map">
	SELECT
		p.rid AS rid,
		p.writetime AS time,
		m.money AS m_money,
		l.money AS l_money,
		h.money AS h_money,
	FROM
		t_product p
		LEFT JOIN t_m_order m ON p.no= m.no
		LEFT JOIN t_l_order l ON p.no= l.no
		LEFT JOIN t_h_order h ON p.no= h.no
	WHERE
        p.user_id=#{userId}     
	ORDER BY
	p.writetime DESC 
	LIMIT  #{page},#{limit};
</select>

3.请求

        @PostMapping("/selectProduct")
	@ResponseBody
	public R product(long userId,Integer page,Integer limit) {
			
		Integer page = StringUtils.isEmpty(page) ? 1 : Integer.parseInt(page);
		Integer limit = StringUtils.isEmpty(limit) ? 10 : Integer.parseInt(limit);
		
		Integer pages = limit*(page - 1);
		Integer total = null;//总页数
		
		List<Map<String, Object>> listmap=productService.selectProductStream(userId,pages,limit);
		Integer totalPageNum = (total +  limit  - 1) / limit;
		
		return R.ok().put("result", listmap).put("totalPageNum", totalPageNum);
	}

4.页面解析参数

mui.ajax({
...
success: function(data) {
    for (var i = 0; i < data.result.length; i++) {
        alert("总页数:"+data.totalPageNum);
        alert("ID:"+data.result[i].rid);
        alert("时间:"+data.result[i].time);
        alert("M:"+data.result[i].m_money);
        alert("L:"+data.result[i].l_money);
        alert("H:"+data.result[i].h_money);
    }
 },
  ...
});

取值的 name 就是xml查询列表 AS 别名 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值