Spring提供的iBatis的SqlMap配置
1. applicationContext.xml
<!-- Spring提供的iBatis的SqlMap配置-->
<bean id="sqlMapClient" class="com.ks.tjrw.jl.dao.impl.ibatis.KSSqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
2. SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<properties resource="db.properties" />
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="64" maxSessions="20"
maxTransactions="20" useStatementNamespaces="false" />
<sqlMap resource="com/ks/tjrw/jl/sqlFile/Pdgxxt.xml" />
<sqlMap resource="com/ks/tjrw/jl/sqlFile/Pdxljdjxjyjl.xml" />
<sqlMap resource="com/ks/tjrw/jl/sqlFile/Zmqfh.xml" />
<sqlMap resource="com/ks/tjrw/jl/sqlFile/ZmqfhSub.xml" />
<sqlMap resource="com/ks/tjrw/jl/sqlFile/Clhzlx.xml" />
</sqlMapConfig>
3.列举其中一个
com/ks/tjrw/jl/sqlFile/Pdgxxt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="Pdgxxt">
<typeAlias alias="Pdgxxt" type="com.ks.tjrw.jl.model.Pdgxxt" />
<resultMap id="get-PdxSub-result" class="com.ks.tjrw.jl.model.Pdgxxt">
<result property="powerNo" column="POWER_DISTRIBUTION_NO"/>
<result property="name" column="NAME"/>
<result property="number" column="NUMBER"/>
<result property="linkAmount" column="LINK_AMOUNT"/>
<result property="linkSituation" column="LINK_SITUATION"/>
<result property="verity" column="VERITY_SITUATION"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="lineNo" column="LINE_CHECK_NO"/>
</resultMap>
<select id="findPdxSubByPk" parameterClass="Pdgxxt" resultClass="Pdgxxt" resultMap="get-PdxSub-result">
select * from JL_PDXLJDJXJYJL_PDGXXT where POWER_DISTRIBUTION_NO=#powerNo#
</select>
<!-- 查询配电线路接地、接线检验记录_配电干线表实体 -->
<select id="getPdg" resultClass="Pdgxxt" parameterClass="java.lang.String" resultMap="get-PdxSub-result">
select * from JL_PDXLJDJXJYJL_PDGXXT where 1=1
<dynamic>
<isNotEmpty prepend="and">
LINE_CHECK_NO=#lineNo#
</isNotEmpty>
</dynamic>
</select>
<!-- 插入配电线路接地、接线检验记录_配电干线表实体 -->
<insert id="insertPdg" parameterClass="Pdgxxt">
insert into JL_PDXLJDJXJYJL_PDGXXT(POWER_DISTRIBUTION_NO)
values (#powerNo#)
</insert>
<!-- 修改配电线路接地、接线检验记录_配电干线表实体 -->
<update id="updatePdg" parameterClass="Pdgxxt">
update JL_PDXLJDJXJYJL_PDGXXT set POWER_DISTRIBUTION_NO=#powerNo#
<dynamic>
<isNotNull prepend="," property="lineNo">
LINE_CHECK_NO=#lineNo#
</isNotNull>
<isNotNull prepend="," property="name">
"NAME"=#name#
</isNotNull>
<isNotNull prepend="," property="number">
"NUMBER"=#number#
</isNotNull>
<isNotNull prepend="," property="linkAmount">
LINK_AMOUNT=#linkAmount#
</isNotNull>
<isNotNull prepend="," property="linkSituation">
LINK_SITUATION=#linkSituation#
</isNotNull>
<isNotNull prepend="," property="verity">
VERITY_SITUATION=#verity#
</isNotNull>
<isNotNull prepend="," property="createTime">
CREATE_TIME=#createTime#
</isNotNull>
</dynamic>
where POWER_DISTRIBUTION_NO=#powerNo#
</update>
<!-- 删除配电线路接地、接线检验记录_配电干线表实体 -->
<delete id="deletePdg" parameterClass="java.util.List">
delete JL_PDXLJDJXJYJL_PDGXXT
<iterate prepend="WHERE" open="(" close=")"
conjunction="OR">
LINE_CHECK_NO=#matList[]#
</iterate>
</delete>
<delete id="deletePdxSubByCondition" parameterClass="java.lang.String">
delete from JL_PDXLJDJXJYJL_PDGXXT where LINE_CHECK_NO=#lineNo#
</delete>
</sqlMap>
4.对应的action
PdxAction---》列举edit方法
public String editPdx(){
pdxSubList = pdxSubService.findPdxs(pdx.getLineCheckNo());
pdx = pdxDao.findPdxByNo(pdx);
return newpath("/tjrw/jl/pdx.jsp");
}
5.
@Repository("PdxljdjxjyjlDaoImpl")
public class PdxljdjxjyjlDaoImpl extends BaseDaoiBatis<Pdxljdjxjyjl> implements PdxljdjxjyjlDao {
public List<Pdxljdjxjyjl> findPdxByQuery(Object obj, Pagination p) {
return queryForList("getPdx",obj,p);
}
public boolean insertPdx(Pdxljdjxjyjl pdx) {
return insert("insertPdx",pdx);
}
public boolean updatePdx(Pdxljdjxjyjl pdx) {
return update("updatePdx",pdx);
}
public boolean deletePdx(List<String> pkList) {
return delete("deletePdx",pkList);
}
public long getAllCounts(){
return getObjectTotal("getPdx");
}
public long getAllCounts(Object obj){
return getObjectTotal("getPdx",obj);
}
public Pdxljdjxjyjl findPdxByNo(Pdxljdjxjyjl pdx){
return (Pdxljdjxjyjl) queryForObject("findPdxByPk",pdx);
}
}
/**
*
* 类说明:数据操作基类,实现了物理分页查询,增,删,改等基本功能
* 作者:lf
* 创建时间:2011-4-4 下午04:59:48
*/
public class BaseDaoiBatis<T> {
private Logger logger = null;
@Resource(name="sqlMapClient")
private SqlMapClient sqlMapper = null;
public BaseDaoiBatis(){
getLogger();
}
public SqlMapClient getSqlMapper() {
return sqlMapper;
}
public void setSqlMapper(SqlMapClient sqlMapper) {
this.sqlMapper = sqlMapper;
}
protected Logger getLogger() {
if (null == logger) {
logger = Logger.getLogger(getClass().getName());
}
return logger;
}
/**
* 根据传入的sqlId创建查询总记录数的count sqlId
* 创建CountStatement,并将其添加到MapStatement(HashMap)中
*/
private void prepareCountQuery(String sqlId) {
//将传入的sqlId转换为__sqlId__Count__
String countQuery = CountStatementUtil.getCountStatementId(sqlId);
if (logger.isDebugEnabled()) {
logger.debug("Convert " + sqlId + " to " + countQuery);
}
if (sqlMapper instanceof SqlMapClientImpl) {
SqlMapExecutorDelegate delegate = ((SqlMapClientImpl) sqlMapper).getDelegate();
try {
delegate.getMappedStatement(countQuery);
}catch (SqlMapException e) {
delegate.addMappedStatement(CountStatementUtil.
createCountStatement(delegate.getMappedStatement(sqlId)));
}
}
}
/**
* 根据传入的sqlId和对象参数,查询满足条件的总记录条数
*/
public long getObjectTotal(String sqlId, Object parameterObject) {
long count = 0l;
prepareCountQuery(sqlId); //创建CountStatement,并将其添加到MapStatement(HashMap)中
try {
count = (Long) sqlMapper.queryForObject(
CountStatementUtil.getCountStatementId(sqlId),
parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
}
return count;
}
/**
* 根据传入的sqlId查询满足条件的总记录条数
*/
public long getObjectTotal(String sqlId) {
long count = 0l;
prepareCountQuery(sqlId); //创建CountStatement,并将其添加到MapStatement(HashMap)中
try {
count = (Long) sqlMapper.queryForObject(
CountStatementUtil.getCountStatementId(sqlId));
} catch (SQLException e) {
printErrorInfo(e);
}
return count;
}
/**
* 根据传入的sqlId查询数据库
*/
public T queryForObject(String sqlId) {
T results = null;
try {
results = (T) sqlMapper.queryForObject(sqlId);
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
/**
* 根据传入的sqlId,和对象参数parameterObject查询数据库
*/
public T queryForObject(String sqlId, Object parameterObject) {
T results = null;
try {
results = (T) sqlMapper.queryForObject(sqlId, parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
/**
* 使用sql语句查询列表,返回List集合
* 待执行的sql查询语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可
*/
public List<T> queryForList(String sqlId) {
List<T> results = null;
try {
results = sqlMapper.queryForList(sqlId);
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
public List<T> queryForList(String sqlId, Object parameterObject) {
List<T> results = null;
try {
results = sqlMapper.queryForList(sqlId, parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
/**
* 功能说明:分页查询
* @param sqlId sql查询语句
* @param pagination.getCurrentPage() 起始页面
* @param pagination.getPageSize() 每页的记录条数
* @return
*/
public List<T> queryForList(String sqlId,Pagination pagination) {
List<T> results = null;
try {
results = sqlMapper.queryForList(sqlId,
pagination.getCurrentPage(), pagination.getPageSize());
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
public List<T> queryForList(String sqlId, Object parameterObject,Pagination pagination) {
List<T> results = null;
try {
results = sqlMapper.queryForList(sqlId, parameterObject,
pagination.getCurrentPage(),pagination.getPageSize());
} catch (SQLException e) {
printErrorInfo(e);
}
return results;
}
/**
* 向数据库执行插入操作
*
* @param sqlId 待执行的sql插入操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可
* @param parameterObject 待插入的对象
* @return 在配置文件中配置<selectKey>
*/
public boolean insert(String sqlId, Object parameterObject) {
try {
sqlMapper.insert(sqlId, parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
return false;
}
return true;
}
/**
* 向数据库执行插入操作,并返回配置文件中<selectKey>所返回的值
*
* @param sqlId
* @param parameterObject
* @return
*/
public int insertAndReturnPK(String sqlId, Object parameterObject) {
int returnValue = 0;
try {
returnValue = Integer.parseInt(sqlMapper.insert(sqlId,
parameterObject).toString());
} catch (SQLException e) {
printErrorInfo(e);
}
return returnValue;
}
/**
* 向数据库执行修改操作
*
* @param sqlId 待执行的sql修改操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可
* @param parameterObject 待修改的对象
* @return
*/
public boolean update(String sqlId, Object parameterObject) {
try {
sqlMapper.update(sqlId, parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
return false;
}
return true;
}
/**
* 向数据库执行删除操作
*
* @param sqlId
* 待执行的sql删除操作语句,该sql语句存在于XML配置文件中,此处只需要引用相应的ID即可
* @param parameterObject
* 待删除的对象
*/
public boolean delete(String sqlId, Object parameterObject) {
try {
sqlMapper.delete(sqlId, parameterObject);
} catch (SQLException e) {
printErrorInfo(e);
return false;
}
return true;
}
/**
* 打印错误信息,以便于调试
*/
private void printErrorInfo(SQLException e) {
logger.error("error in class " + this.getClass() + ":" + e.toString()
+ ",caused by:" + e.getCause()+ ",more information:" + e.getMessage());
}
}
转载于:https://www.cnblogs.com/wangliansong/p/3277506.html
Spring提供的iBatis的SqlMap配置相关推荐
- Spring中的Ibatis之SqlMapClientDaoSupport
Spring通过DAO模式,提供了对iBATIS的良好支持.SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建,继而整合iB ...
- Spring Boot实践——基础和常用配置
借鉴:https://blog.csdn.net/j903829182/article/details/74906948 一.Spring Boot 启动注解说明 @SpringBootApplica ...
- Spring Boot概述与入门特点配置方式注入方式yim配置文件与多文件配置Spring Boot自动配置原理lombok应用
1. Spring Boot概述 Spring Boot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品: 首页Spring Boot简介可以 ...
- Spring Bean、XML方式Bean配置、Bean实例化配置、Bean注入
文章目录 Bean管理 一.SpringBoot Bean 初了解 1.1 了解 1.2 Bean的作用域 1.2.1 注意事项 1.3 第三方Bean 二. 基于XML方式Bean的配置 2.1 S ...
- Spring Boot 面试杀手锏:自动配置原理
欢迎关注方志朋的博客,回复"666"获面试宝典 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观望态度外,如 ...
- 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法
我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...
- spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)...
Spring提供的JDBC框架负责管理资源和异常处理,从而可以简化开发者的JDBC代码.开发者只需要编写写入和读取数据库相关的代码即可. 正如在之前的小节中论述过的,Spring将数据库访问过程中的模 ...
- spring中基于XML的AOP配置步骤
spring中基于XML的AOP配置步骤 IAccountService.java package com.itheima.service;/*** 账户的业务层接口*/ public interfa ...
- java 外部覆盖内部配置,Spring 与自定义注解、外部配置化的结合使用
Spring 与自定义注解.外部配置化的结合使用 一.Java注解的简单介绍 注解,也叫Annotation.标注,是 Java 5 带来的新特性. 可使用范围 类.字段.方法.参数.构造函数.包等, ...
最新文章
- 比较零知识证明算法zkSNARK,zkSTARKs,zkBoo,Sonic,BulletProofs
- MinGW-W64安装及其使用
- 为什么OpenCV3在Python中导入名称是cv2
- 合批只是对CPU的优化,与GPU没有任何关系
- SQLserver2008数据表的修改操作
- 为什么找不到用户和计算机名,计算机管理里没有(本地用户和组)了为什么怎么恢复...
- Ubuntu禁用root登录
- Centos7安装vlc
- tinycc update VERSION to 0.9.27
- zabbix 添加jvm监控
- 计算机专业过度饱和,教育部:撤销518个本科专业,计算机专业也被撤销,市场饱和了?...
- 从神话诗歌到奇幻科学的人类探索史·《月亮》·总篇(有配图)
- php中dialog使用方法,window.dialogArguments 使用说明
- 保乐力加在四川峨眉山兴建中国首家麦芽威士忌酒厂
- 第三十一篇 -- 学习第六十八天打卡20190911
- 用户下订单之后15分钟支付实现_用户提交订单,30分钟后没付款取消订单功能分析...
- 计算机地图制图的生产流程包括,2012注册测绘师综合:计算机地图制图生产工艺...
- 强制关闭计算机窗口,windows系统怎么取消关机时强制关闭程序提示窗口?
- wsgw登录抓包记录
- Jess在Eclipse中的安装
热门文章
- Java每隔5秒查找redis_Redis利用Pipeline加速查询速度的方法
- 1177: 按要求排序(指针专题)_排序算法之快速排序
- [渝粤教育] 长沙航空职业技术学院 信息技术 参考 资料
- [渝粤教育] 重庆电子工程职业学院 物联网工程导论 参考 资料
- 【渝粤教育】国家开放大学2018年秋季 2208T政治学原理 参考试题
- 【渝粤题库】陕西师范大学200071 古代汉语 作业(高起本、高起专)
- 【Python实例第35讲】高斯过程分类:Iris数据集
- 基于OpenCV的红绿灯识别代码解析
- [转]vs2003,安装程序检测到另一个程序要求计算机重新启动
- 文件压缩 ZipOutputStream类