List<Map<String,Object>>——基于SSM框架

不说废话,直接说我的思路
1、先在entity(dao)定义一个实体类,定义要封装的数据,取名ES_ROUTE

package xingluo.navigate.entity;

    public class ES_ROUTE {
	private int id;
	private String sbmc;
	private String destname;
	private String route;
	private int angle;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSbmc() {
		return sbmc;
	}
	public void setSbmc(String sbmc) {
		this.sbmc = sbmc;
	}
	public String getDestname() {
		return destname;
	}
	public void setDestname(String destname) {
		this.destname = destname;
	}
	public String getRoute() {
		return route;
	}
	public void setRoute(String route) {
		this.route = route;
	}
	public int getAngle() {
		return angle;
	}
	public void setAngle(int angle) {
		this.angle = angle;
	}	
}

2、然后在Mapper.xml中使用

先定义要返回的Map的参数
id 为标识符
type 为类型,使用实体类名
property 需要映射到实体类的属性名称
column 数据表的列名或者标签别名

后面这两个可以不写:
javaType 一个完整的类名,或者是一个类型别名。如果你匹配的是一个JavaBean,那MyBatis 通常会自行检测到。然后,如果你是要映射到一个HashMap,那你需要指定javaType 要达到的目的。
jdbcType 数据表支持的类型列表。这个属性只在insert,update 或delete 的时候针对允许空的列有用。JDBC 需要这项,但MyBatis 不需要。如果你是直接针对JDBC 编码,且有允许空的列,而你要指定这项。

<resultMap id = "routeMap" type="ES_ROUTE">
	<!-- 
		id元素 ,用于设置主键字段与领域模型属性的映射关系
		result元素 ,用于设置普通字段与领域模型属性的映射关系
	 -->
    <id property="id" column="id"/>
    <result property="sbmc" column="sbmc"/>
    <result property="destname" column="destname"/>
    <result property="route" column="route"/>
    <result property="angle" column="angle"/>
</resultMap>

SQL语句

<select id="getRouteDestAll" parameterType="int" resultMap="routeMap">
        SELECT
        	tb_route.id,
			tb_dev.sbmc,
			tb_dest.destname,
			tb_route.route,
			tb_route.angle
		FROM
			tb_route
		INNER JOIN tb_dest ON
			tb_route.destID=tb_dest.id
		INNER JOIN tb_dev ON
			tb_route.fromdev=tb_dev.sbid
		WHERE
			tb_dev.sbid=#{sbid}
    </select>

id为接口提供函数名
parameterType为输入类型
resultMap输出类型,与resultMap的id对应

3、编写Mapper接口

package xingluo.navigate.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import xingluo.navigate.entity.TB_ROUTE;

public interface TB_ROUTEMapper {
	//查询
	//一个list集合里放的是Map.
	//每一个Map的key值类型,对应的value类型
	List<Map<String,Object>> getRouteDestAll(@Param("sbid")int sbid);
}

Param可以固定参数,方便xml中使用

4、编写Service接口和Seviceimpl具体实现类

package xingluo.navigate.service;

import java.util.List;
import java.util.Map;

import xingluo.navigate.entity.TB_ROUTE;

public interface TB_ROUTEService {
	//查询
	List<Map<String,Object>> getRouteDestAll(int sbid);
}

------------------------------------------分割线------------------------------------------

package xingluo.navigate.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import xingluo.navigate.entity.TB_ROUTE;
import xingluo.navigate.mapper.TB_ROUTEMapper;
import xingluo.navigate.service.TB_ROUTEService;

@Service
public class TB_ROUTEServiceimpl implements TB_ROUTEService {

	@Autowired
	TB_ROUTEMapper tbr;
	
	@Override
	public List<Map<String, Object>> getRouteDestAll(int sbid){
		return tbr.getRouteDestAll(sbid);
	}
}

5、然后就是控制器的调用和前端的调用

package xingluo.navigate.control;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import xingluo.navigate.entity.TB_ROUTE;
import xingluo.navigate.service.TB_ROUTEService;

@Controller
public class RouteControl {
	@Autowired    //@Autowired修饰的类需要注入对象,String会自己在注入的里面找到相应 的对象注入-HBy
	TB_ROUTEService tbr;

	//列出所有目的地信息
	@RequestMapping("/routeSelectDestAll")
	public String routeSelectDestAll(HttpServletRequest req,HttpServletResponse resq,Model model)throws ServletException, IOException{
		req.setCharacterEncoding("UTF-8");
		int sbid=Integer.parseInt(req.getParameter("sbid"));
		
		List<Map<String, Object>> list = tbr.getRouteDestAll(sbid);
		model.addAttribute("list",list);
		
		return "route-selectDest";
	}
}

最后的效果图
在这里插入图片描述
写完后,我感觉没简便到好多,感觉就是一个变多了一步地实体封装类,有可能我还没遇到可以简便的地方。以后使用的时候在多多思考。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值