spring jdbc分离数据库代码和java代码

读取配置文件类

package com.eshore.ismp.contract.sql;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SQLPropertyConfigurer {
	private Logger logger = LoggerFactory.getLogger(SQLPropertyConfigurer.class);
	private static final Properties properties =new Properties();
	private String path;

	private SQLPropertyConfigurer(String path) {
		this.path = path;
		load();
	}

	/**
	 *
	 * //DESC 获取sql语句
	 * @time: 2016年6月16日 下午12:12:48
	 * @throws
	 */
	private void load() {
		if (null != properties) {
			InputStream in = null;
			try {
				/* 检测是否需要从classpath下进行sql配置文件的读取 */
				if (path.indexOf("classpath:") != -1) {
					/* 从classpath下获取sql配置文件 */
					in = this.getClass().getResourceAsStream("/" + path.split("classpath:")[1]);
				}
				if (null == in) {
					/* 从文件路径获取sql配置文件 */
					in = new FileInputStream(path);
					properties.load(in);
				} else {
					properties.load(in);
				}
				logger.info("load sql file success");
			} catch (FileNotFoundException e) {
				logger.error("sqlfile is not found:",e);
			} catch (IOException e) {
				logger.error("read sqlfile error:",e);
			} finally {
				if (null != in) {
					try {
						in.close();
					} catch (IOException e) {
						logger.error("read sqlfile error:",e);
					}
				}
			}
		}
	}

	/**
	 *
	 * //DESC (这里用一句话描述这个方法的作用)
	 * @time: 2016年6月6日 上午10:25:55
	 * @param key
	 * @param routeKey
	 * @return
	 * @throws
	 */
	public static String getSql(String key) {
		String sql = null;
		if (null != properties) {
			sql = properties.getProperty(key);
		}
		return sql;
	}
}

  

spring配置文件

<bean id="SQLPropertyConfigurer" class="com.eshore.ismp.contract.sql.SQLPropertyConfigurer">
		<constructor-arg name="path" value="classpath:sql.properties" />
	</bean>

 

数据库代码配置文件

getId=CALL getId(?,?,?)
insertContract=insert into T_PRODUCT_CONTRACT (id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
insertContractHisByServNbr=insert into T_PRODUCT_CONTRACT_HIS (id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
queryContractByServNbr=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where serv_nbr=? and city_id=?
queryNonormalByServNbr=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where serv_nbr=? and city_id=? and state_id IN (0,1,2,11,12,14)
queryContractByServNbrAndServNbrParent=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where serv_nbr=? and serv_nbr_parent=? and city_id=?
queryContractByServNbrAndProductSpecId=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where serv_nbr\=? and product_spec_id\=? and city_id\=?
queryContractByBnetId=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where bnet_id\=? and city_id\=?
queryContractByBnetIdAndProductSpecId=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where bnet_id\=? and product_spec_id\=? and city_id\=?
queryContractByServNbrParent=select id, bnet_id,product_spec_id,state_id,offering_id,accept_number,offering_spec_id,serv_nbr_parent,serv_nbr,acc_nbr,node_id,sys_id,city_id,create_time,modify_time from T_PRODUCT_CONTRACT where serv_nbr_parent\=? and city_id\=?
updateContractStatusByServNbr=update T_PRODUCT_CONTRACT set state_id=? where serv_nbr=? and city_id=?
updateContractStatusByServNbrAndProductSpecId=update T_PRODUCT_CONTRACT set state_id=? where serv_nbr=? and product_spec_id=? and city_id=?
updateAccNbr=update T_PRODUCT_CONTRACT set acc_nbr=? where serv_nbr=?  and city_id=?
updateContractByServNbr=update T_PRODUCT_CONTRACT set

 

java代码

	@Override
	public List<Contract> queryByServNbrAndServNbrParent(String servNbr,
			String servNbrParent, int cityId) {
		RowMapper<Contract> rowMapper = new ContractRowMapper();
		return jdbcTemplate.query(SQLPropertyConfigurer.getSql("queryContractByServNbrAndServNbrParent"), new Object[]{servNbr,servNbrParent,cityId}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.INTEGER}, rowMapper );

	}

	@Override
	public List<Contract> queryUserOrderData(String bnetId, int cityId) {
		RowMapper<Contract> rowMapper = new ContractRowMapper();
		return jdbcTemplate.query(SQLPropertyConfigurer.getSql("queryContractInfoBybnetIdAndCityId"), new Object[]{bnetId,cityId}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER}, rowMapper );
	}

  

 

 

时间: 2024-10-16 01:53:21

spring jdbc分离数据库代码和java代码的相关文章

Spring JDBC 访问数据库

Spring JDBC是Spring所提供的持久层技术,它以一种更直接.更简单的方式使用JDBC API.在Spring JDBC里,用户仅需要做那些必不可杀的事儿,而将资源获取.Statement创建.异常处理.资源释放等繁杂的工作交给Spring. 虽然ORM的框架已经很成熟,但是JDBC灵活直接的特性依旧让它有自己的用武之地. 本节的主要内容:使用JdbcTemplate模板类进行CRUD数据操作.BLOB和CLOB类型数据的操作,支持命名参数绑定NamedParameterJdbcTem

Spring JDBC主从数据库配置

通过昨天学习的自定义配置注释的知识,探索了解一下web主从数据库的配置: 背景:主从数据库:主要是数据上的读写分离: 数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈: 2. 主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发: 3. 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性: 读写分离的基本原理就是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE

Android NDK开发(五)--C代码回调Java代码【转】

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41862479 在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部分的实际开发知识,基本上掌握这些就可以做一个基本的NDK开发了,但是光是了解Java回调C层的数据是不是还不够啊,考虑问题要考虑可逆性,Java能回调C,那么C能否反过来回调Java呢?答案是肯定可以的,这篇博客就介绍一个C语言如何调用Java层的代码.以下是一些问题场景,我们带着这个问题场景来分析

如何使用网页开发自己的app,在网页中的按钮与自己的java代码绑定来实现打电话即javascript代码调用java代码,和java代码来调用javascript代码

1首先是如何在自己的app里用网页显示,这样可以较快的更新界面而不需要让客户端升级,方法如下: xml文件: <WebView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/web_v" /> 2在activity里绑定网页: public class MainActivity extends Action

spring mvc中,如何在 Java 代码里,获取 国际化 内容

首先,在Spring的application.xml中定义 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!-- 国际化信息所在的文件名 --> <property name="basename" value="messages/messages"

【持续更新】把.net代码转换为java代码的注意事项

国内大多数大学的软件相关专业大多强制学生学习c和Java,但.net 的几个语言可以说是选学的. 由于visual studio在windows平台上使用相对方便,一些同学会在上大学的Java课之前自学.net开发技术. 这一类同学就需要一些代码转换技巧来帮助学习Java. 在这之前我吐槽一下TinyMCE编辑器,它不能正确染色一些vb.net的关键字,比如Async, NameOf, Aggregate .c#的某些关键字也不能正确染色,如__arglist. 由于我这学期才开始上Java课,

用代码统计java代码行数

public class Tongjidaima { private static int i;//代码总行数 private static int j;//文件个数 public static void main(String[] args) throws IOException { File file = new File("F:\\eclipsework\\Zhansen");//需要统计行数的文件夹路径 traverseFiles(file);//调用递归方法查看.java文件

jni中c代码调用java代码

原理是使用反射的机制 java中反射的例子: Class<?> forName = Class.forName("com.example.ndkcallback.DataProvider"); //找到类 Method declaredMethod = forName.getDeclaredMethod("helloFromJava", new Class[]{}); //找到类的方法 declaredMethod.invoke(forName.newI

Java代码实现excel数据导入到Oracle

1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.Bi