【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]

【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]该案例的实现是基于jar包org.mybatis.spring中的SqlSessionTemplateAPI进行使用的。主要是完成如何使用SqlSessionTemplate中的API封装一个通用的查询方法。1、首先定义一个业务层数据接口:packagecom.yihg.basic.api;importjava.util.List;importjava.util.Map;

大家好,又见面了,我是你们的朋友全栈君。

该案例的实现是基于jar包org.mybatis.spring中的SqlSessionTemplate API进行使用的。主要是完成如何使用SqlSessionTemplate中的API封装一个通用的查询方法。

1、首先定义一个业务层数据接口:

package com.yihg.basic.api;

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

import com.yihg.mybatis.utility.PageBean;

/**
 * 通用查询
 * 
 * @author zhangsq
 * @create 2016年12月09日 上午9:27:43
 */
public interface CommonService {
	
	/**
	 * 分页列表查询
	 * 
	 * @author zhangsq
	 * @create 2016年12月09日 上午9:28:36
	 * @param sqlId 查询语句ID
	 * @param pageBean 分页参数 或者 查询条件
	 * @return
	 */
	PageBean queryListPage(String sqlId, PageBean pageBean);

	/**
	 * 列表查询
	 * 
	 * @author zhangsq
	 * @create 2016年12月09日 上午9:28:43
	 * @param sqlId 查询语句ID
	 * @param param 查询条件
	 * @return
	 */
	List queryList(String sqlId, Map param);
	
	/**
	 * 对象查询
	 * 
	 * @author zhangsq
	 * @create 2016年12月09日 上午9:28:43
	 * @param sqlId 查询语句ID
	 * @param param 查询条件
	 * @return
	 */
	Map queryOne(String sqlId, Map param);

}

2、定义好后若某个业务模块需要使用通用的方法进行查询数据,则需要继承公共接口。如下图:

【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]

代码如下;

package com.yihg.sales.api;

import com.yihg.basic.api.CommonService;

/**
 * 通用查询
 * 
 * @author zhansgsq
 * @create 2016年12月09日 下午6:41:33
 */
public interface CommonSaleService extends CommonService{

}

3、定义一个相关业务模块的业务实现类CommonServiceImpl,该类需要实现业务接口类CommonSaleService(包括业务接口的方法),

如图所示:

【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]

代码如下;

package com.yihg.sales.impl;

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

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;

import com.yihg.mybatis.utility.PageBean;
import com.yihg.sales.api.CommonSaleService;

/**
 * 通用查询
 * 
 * @author zhangsq
 * @create 2016年12月09日 上午9:34:18
 */
public class CommonServiceImpl implements CommonSaleService {

	@Autowired
	private SqlSessionTemplate ss;

	@Override
	public PageBean queryListPage(String sqlId, PageBean pageBean) {
		
		pageBean.setResult(ss.selectList(sqlId, pageBean));
		return pageBean;
	}

	@Override
	public List queryList(String sqlId, Map param) {
		return ss.selectList(sqlId, param);
	}
	
	@Override
	public Map queryOne(String sqlId, Map param) {
		return ss.selectOne(sqlId, param);
	}
}

4、然后在控制层Controller中定义一个公共的方法以供多处调到,该方法主要是获取查询服务,即可从SpringApplicationContext(org.springframework.context.ApplicationContext)中获取Spring管理的Service,该Service也就是CommonServiceImpl(在Spring Bean中是commonService)。那么公共的方法实现如下图:

【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]

代码如下:

/**
	 * 获取查询服务
	 * 
	 * @author zhangsq
	 * @create 2016年12月09日 上午9:34:25
	 * @param svc
	 * @return
	 */
	private CommonService getCommonService(String svc) {
		if (StringUtils.isBlank(svc)) {
			svc = "commonsaleService";
		}
		return appContext.getBean(svc, CommonService.class);
	}

5、最后在相关的Controller请求方法中直接调用上面的getCommonService方法即可。实例如下图所示:

【SSM进阶之路】使用Spring SqlSessionTemplate API实现查询数据[通俗易懂]

代码如下:

PageBean pb = new PageBean();
		pb.setPage(page);
		if (pageSize == null) {
			pageSize = Constants.PAGESIZE;
		}
		pb.setPageSize(pageSize);
		........
 ........
 ........
		Map<String, Object> pms = WebUtils.getQueryParamters(request);
		pb.setParameter(pms);
		pb = getCommonService(svc).queryListPage(sl, pb);
		model.addAttribute("pageBean", pb);

其中PageBean类是封装了分页的属性以及方法。sl参数的格式为:mapper.xml中的namespace值.sql方法名 如:booking.bookingXXXXXXListPage

代码中使用model将查询的结果返回了,在页面上直接使用循环标签对“PageBean”进行循环获取数据即可。


KO,就到这里吧!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138416.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 那么蒙特卡洛树搜索(Monte Calro Tree Search, MCTS)究竟是啥

    那么蒙特卡洛树搜索(Monte Calro Tree Search, MCTS)究竟是啥同时发布于:http://www.longgaming.com/archives/214Intro最近阿法狗和李师师的人机大战着实火了一把,还顺带捧红了柯杰,古力等一干九段。虽然我从小学的是象棋,对围棋也只是略知一二,但是棋魂还是对我影响颇深的启蒙漫画,于是还是凑热闹看了几盘大战。其中蒙特卡洛树搜索(MonteCalroTreeSearch,MCTS)就多次被各路砖家提及。想必各位选过AI课

    2022年6月24日
    29
  • 消息队列

    消息队列

    2021年3月12日
    158
  • 数据库系统概论课后习题答案(第五版 王珊、萨师煊)

    数据库系统概论课后习题答案(第五版 王珊、萨师煊)第1章绪论1.试述数据、数据库、数据库系统、数据库管理系统的概念。答:(l)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。解析在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。现代计算机能存储和处理的对象十分广泛,表

    2025年7月24日
    1
  • FabricJS gotchas/FabricJS陷阱[通俗易懂]

    FabricJS gotchas/FabricJS陷阱[通俗易懂]FabricJSgotchas这个页面包含了第一次接触fabricJS的人打开的最常见问题的列表。这些缺陷的产生,既有解释不清的原因,也有文档不完善的原因。在这里,我们试图解决共同的问题。Objectsarenomoreselectable-setCoords(对象不再是可选择的-setCoords)Fabric包含两组坐标以快速知道物体在画布上的位置。它们链接到两个对象属性:oCoords和aCoords。当用户与对象交互或结束变换(例如拖动)时,fabricJS会自动更新这些坐标。

    2022年10月24日
    0
  • mac idea 2021 激活码【注册码】

    mac idea 2021 激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    51
  • 使用spss进行系统聚类分析

    使用spss进行系统聚类分析按以下步骤进行操作1)导入数据北京 8070.40 2643.00 12128.00 2511.00 5077.90 4054.70 2629.80 1140.60天津 8679.60 2114.00 6187.30 1663.80 3991.90 2643.60 2172.20 892.20河北 4991.60 1614.40 4483.20 1351.10 2664.10 1991.30 1549.90 460.40山西 3862.80 1603.00 3633.80 951.60 2401.

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号