`

Spring 多数据库连接的实现

 
阅读更多

1.使用Spring的配置文件完成多数据库连接:

 1.1 applicationContext.xml [spring核心配置文件]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  
  	<!-- 知识管理数据库 -->
	<bean id="km_source" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=docmanager"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="123"></property>
	</bean>
	
	<!-- 框架数据库 --> 
	<bean id="ma_source" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=framemanager"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="123"></property>
		<property name="maxActive" value="100000"></property>  
        <property name="maxIdle" value="20"></property>  
        <property name="maxWait" value="1000"></property>  
	</bean>
	  
	<!-- 用户组织数据库 -->
	<bean id="um_source" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=usermanager"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="123"></property>
	</bean>
	 
	 <!-- 工作流数据库 -->
	<bean id="wfe_source" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=wfemanager"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="123"></property>
	</bean>
	  
	<bean id="myDataSource" class="com.smartcom.util.jdbcUtil.DynamicDataSource">
          <property name="targetDataSources">
             <map> 
             	<entry key="ma_source" value-ref="ma_source"/> 
               	<entry key="um_source" value-ref="um_source"/> 
              </map>
          </property>
          <property name="defaultTargetDataSource" ref="km_source"/>
   </bean>

	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false" lazy-init="false" autowire="default">
        <property name="dataSource" ref="myDataSource"/>
    </bean> 
         
  	<import resource="config/ma/beans_pojo.xml"/>
	<import resource="config/ma/beans_dao.xml"/>
	<import resource="config/ma/beans_service.xml"/>
	<import resource="config/ma/beans_action.xml"/>
	<import resource="config/ma/beans_ajax.xml"/> 
	
</beans>

 

 1.2 JdbcContext.java [建立一个获得和设置上下文的类]

package com.smartcom.util.jdbcUtil;
/**
 * 建立一个获得和设置上下文的类
 * @author Liyongbin
 * 此类正在使用
 */
public class JdbcContext {
	
       private static final ThreadLocal<String> contextHolder =  new ThreadLocal<String>();
		
       /**
		 * XXXXX
		 */
		public static void setJdbcType(String jdbcType) { 
			contextHolder.set(jdbcType); 
		} 
		
		/**
		 * XXXXX
		 */ 
		public static String getJdbcType() { 
			return (String) contextHolder.get(); 
		} 
   
		/**
		 * 框架数据库
		 */
		public static void setMa_source(){
			setJdbcType("ma_source");
		}
		
        /**
         * 知识管理数据库
         */
		public static void setKm_source(){
			setJdbcType("km_source");
		}
		
		/**
         * 知识管理数据库
         */
		public static void setUm_source(){
			setJdbcType("um_source");
		}
		
		/**
         * 工作流引擎数据库
         */
		public static void setWfe_source(){
			setJdbcType("wfe_source");
		}
		
		/**
		 * 设置主连接
		 */
		public static void setMaster(){
    	   clearJdbcType();
		} 
		
		/**
		 * 清空连接类型
		 */
		public static void clearJdbcType() { 
			contextHolder.remove(); 
		} 
}


 1.3  IGroupinfoDao.java [DAO层接口]

 

package com.smartcom.ma.dao;


import com.smartcom.ma.pojo.Groupinfo;
import com.smartcom.ma.util.IBaseDao;
 
public interface IGroupinfoDao extends IBaseDao<Groupinfo> {
 
}

 

1.4  GroupinfoDaoImpl.java [DAO层接口实现]

package com.smartcom.ma.dao.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.JdbcTemplate;
import com.smartcom.ma.dao.IGroupinfoDao;
import com.smartcom.ma.pojo.Groupinfo;
import com.smartcom.util.jdbcUtil.JdbcContext;

public class GroupinfoDaoImpl implements  IGroupinfoDao {
	private Groupinfo groupinfo ; 
	private  JdbcTemplate jdbcTemplate;
	
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	public Groupinfo getGroupinfo() {
		return groupinfo;
	}
	public void setGroupinfo(Groupinfo groupinfo) {
		this.groupinfo = groupinfo;
	}

	/**
	 * 【查询】所有部门职位信息
	 * @author Liyongbin [May 4, 2012 8:17:20 PM]
	 */
	@SuppressWarnings("unchecked")
	public List<Groupinfo> findAll() throws Exception {
	    JdbcContext.setUm_source();//设置数据源  
	    List<Groupinfo> groupList = new ArrayList<Groupinfo>(); 
	    Groupinfo groupinfo = null;
		String sql ="select sys_id,sys_createtime,sys_creator,g_name,g_code,parentId,uuid,";
				sql += "g_level,g_state,sys_type,g_type,g_desc,own_subject,remark from groupinfo ";
				sql += "order by sid";
		try {
			List rows=jdbcTemplate.queryForList(sql); 
			Iterator it=rows.iterator();
			while(it.hasNext()){
			    Map groupMap=(Map)it.next();
			    groupinfo =  new Groupinfo(); 
			    groupinfo.setSys_id((Integer)groupMap.get("sys_id"));
			    groupinfo.setSys_createtime(groupMap.get("sys_createtime").toString());
			    groupinfo.setSys_creator((String)groupMap.get("sys_creator"));
			    groupinfo.setG_name((String)groupMap.get("g_name"));
			    groupinfo.setG_code((String)groupMap.get("g_code"));
			    groupinfo.setParentId((String)groupMap.get("parentId"));
			    groupinfo.setUuid((String)groupMap.get("uuid"));
			    groupinfo.setG_level((Integer)groupMap.get("g_level"));
			    groupinfo.setG_state((Integer)groupMap.get("g_state"));
			    groupinfo.setSys_type((Integer)groupMap.get("sys_type"));
			    groupinfo.setG_type((Integer)groupMap.get("g_type"));
			    groupinfo.setG_desc((String)groupMap.get("g_desc"));
			    groupinfo.setOwn_subject((Integer)groupMap.get("own_subject"));
			    groupinfo.setRemark((String)groupMap.get("remark"));
			    groupList.add(groupinfo);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return groupList;
	}
	
	/**
	 * 【新建】部门职位
	 * @author Liyongbin [May 5, 2012 8:02:24 AM]
	 */
	public int save(Groupinfo groupinfo) throws Exception {
		Object [] args = null;
		int ret = -1;
		if(null==groupinfo){
			return ret;
		}
		String  sql ="insert into groupinfo (sys_id,sys_createtime,sys_creator,g_name,g_code,parentId,uuid,g_level,g_state,sys_type,g_type,g_desc,own_subject,remark)";
				sql +=" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		try {
			args = new Object[13];
			args[0] = groupinfo.getSys_id();
			args[1] = groupinfo.getSys_createtime();
			args[2] = groupinfo.getSys_creator();
			args[3] = groupinfo.getG_name();
			args[4] = groupinfo.getG_code();
			args[5] = groupinfo.getParentId();
			args[6] = groupinfo.getUuid();
			args[7] = groupinfo.getG_level(); 
			args[8] = groupinfo.getG_state();	
			args[9] = groupinfo.getSys_type();
			args[10]= groupinfo.getG_type();
			args[11]= groupinfo.getG_desc();
			args[12]= groupinfo.getOwn_subject();
			args[13]= groupinfo.getRemark();
			ret =  jdbcTemplate.update(sql, args);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return ret;
	}

 
	
	/**
	 * 【删除】部门职位
	 * @author Liyongbin [May 19, 2012 6:58:41 AM]
	 */
	public int delete(int id) throws Exception {
		Integer ret = -1;
		String sql = "delete from groupinfo where sys_id=?";
		try { 
			ret = jdbcTemplate.update(sql,new Object[]{id}); 
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return ret; 
	}

	/**
	 * 【查询】部门职位-->sysId
	 * @author Liyongbin [May 4, 2012 8:17:20 PM]
	 */
	@SuppressWarnings("unchecked")
	public Groupinfo findById(int id) throws Exception {
		JdbcContext.setUm_source();//设置数据源  
	    Groupinfo groupinfo = null;
		String sql ="select sys_id,sys_createtime,sys_creator,g_name,g_code,parentId,uuid,";
				sql += "g_level,g_state,sys_type,g_type,g_desc,own_subject,remark from groupinfo";
		try {
			List rows=jdbcTemplate.queryForList(sql); 
			Iterator it=rows.iterator();
			if(it.hasNext()){
			    Map groupMap=(Map)it.next();
			    groupinfo =  new Groupinfo(); 
			    groupinfo.setSys_id((Integer)groupMap.get("sys_id"));
			    groupinfo.setSys_createtime(groupMap.get("sys_createtime").toString());
			    groupinfo.setSys_creator((String)groupMap.get("sys_creator"));
			    groupinfo.setG_name((String)groupMap.get("g_name"));
			    groupinfo.setG_code((String)groupMap.get("g_code"));
			    groupinfo.setParentId((String)groupMap.get("parentId"));
			    groupinfo.setUuid((String)groupMap.get("uuid"));
			    groupinfo.setG_level((Integer)groupMap.get("g_level"));
			    groupinfo.setG_state((Integer)groupMap.get("g_state"));
			    groupinfo.setSys_type((Integer)groupMap.get("sys_type"));
			    groupinfo.setG_type((Integer)groupMap.get("g_type"));
			    groupinfo.setG_desc((String)groupMap.get("g_desc"));
			    groupinfo.setOwn_subject((Integer)groupMap.get("own_subject"));
			    groupinfo.setRemark((String)groupMap.get("remark"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return groupinfo;
	}
 
	/**
	 * 【修改】部门职位
	 * @author Liyongbin [May 5, 2012 8:02:24 AM]
	 */
	public int update(Groupinfo groupinfo) throws Exception {
		int ret = -1;
		Object [] args = null;
		String sql = "update groupinfo set sys_createtime=?,sys_creator=?,g_name=?,g_code=?,parentId=?,uuid=?,";
		sql += "g_level=?,g_state=?,sys_type=?,g_type=?,g_desc=?,own_subject=?,remark=?"; 
		sql += "where sys_id=? ";
		try {
			args = new Object[14]; 
			args[0] = groupinfo.getSys_createtime();
			args[1] = groupinfo.getSys_creator();
			args[2] = groupinfo.getG_name();
			args[3] = groupinfo.getG_code();
			args[4] = groupinfo.getParentId();
			args[5] = groupinfo.getUuid();
			args[6] = groupinfo.getG_level(); 
			args[7] = groupinfo.getG_state();	
			args[8] = groupinfo.getSys_type();
			args[9]= groupinfo.getG_type();
			args[10]= groupinfo.getG_desc();
			args[11]= groupinfo.getOwn_subject();
			args[12]= groupinfo.getRemark();
			args[13]= groupinfo.getSys_id();
			ret = jdbcTemplate.update(sql,args); 
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return ret; 
	}
  
}

 

 

分享到:
评论

相关推荐

    spring连接数据库代码

    在这个类中,我们使用 Spring 的 BeanFactory 来获取数据库连接,然后执行数据库操作语句,并将结果封装到 SpringtoResultSetInfoBean 对象中。 本文详细讲解了如何使用 Spring 连接数据库,包括创建数据库、配置 ...

    Spring数据库连接等配置加密

    本文将详细探讨"Spring数据库连接等配置加密"这一主题。 首先,我们来看`dbconfig.properties`文件,这是Spring项目中常见的用于存储数据库连接配置的文件。通常,这个文件会包含如下内容: ``` # 数据库连接配置 ...

    spring连接数据库实例

    同时,项目结构应包含Spring的配置文件(如`applicationContext.xml`)和数据库连接相关的bean定义。此外,确保数据库服务器运行正常,连接参数正确无误。 总结来说,这个"spring连接数据库实例"主要涵盖了Spring...

    Spring中连接各个数据库

    - `BasicDataSource`类来自Apache Commons DBCP库,它是一个连接池实现,可以高效管理数据库连接。`&lt;bean&gt;`标签定义了一个名为`dataSource`的bean,它的类型是`org.apache.commons.dbcp.BasicDataSource`。 - `...

    spring框架、数据库池连接等之间连接的jar包.rar

    在Spring框架中,数据库连接池是实现高效数据库操作的关键组件,它允许应用程序重复使用已建立的数据库连接,而不是每次都创建新的连接,从而提高了性能和资源利用率。 在Java中,常见的数据库连接池工具有C3P0、...

    初学SpringCloud连接Oracle数据库

    为了在SpringCloud服务中使用这个数据库连接,你可能还需要配置Ribbon或Feign客户端,以在微服务间进行数据交互。Ribbon是客户端负载均衡器,Feign是一个声明式HTTP客户端。配置它们可以使你的服务通过服务名而不是...

    spring整合数据库连接的几种方式

    在Spring框架中,整合数据库连接是开发Web应用的常见任务,它提供了多种方式来管理数据库连接池,确保高效、稳定的数据交互。以下是Spring整合数据库连接的三种主要方式:DBCP、C3P0和Proxool,以及它们各自的特点和...

    spring多数据库

    总的来说,"spring多数据库"项目提供了一个标准的Spring项目模板,帮助开发者理解和实践如何在Spring中实现多数据库的切换查询,从而提升应用的灵活性和扩展性。通过合理配置和编程,可以有效地管理和操作来自多个...

    Spring连接图存数据库Neo4j实现增删改查

    Spring连接图存数据库Neo4j实现增删改查 Spring连接图存数据库Neo4j实现增删改查 Spring连接图存数据库Neo4j实现增删改查 Spring连接图存数据库Neo4j实现增删改查 Spring连接图存数据库Neo4j实现增删改查 Spring...

    spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目

    在Spring中,我们可以配置多个DataSource bean,每个bean对应一个数据库连接。Spring的AbstractRoutingDataSource类可以用来实现动态数据源切换,它可以根据一定的规则(如事务上下文、请求参数等)选择使用哪个数据...

    druid实现springmvc数据库连接的用户名和密码加密

    在Spring MVC应用中,数据库连接池的管理是一个关键部分,其中Druid是一个广泛使用的高性能连接池组件。在标准配置下,Druid允许开发者通过配置文件(如`druid.properties`或`application.properties`)来设置数据库...

    springboot通过数据库动态连接多数据库

    至于`dade02`这个文件,由于没有明确的文件类型,可能是一个数据库连接配置文件,也可能包含其他数据,具体用途需要根据实际项目需求来确定。 最后,为了在代码中动态选择数据源,我们可以使用Spring的`...

    Spring boot连接oracle数据库JDBC配置步骤

    使用以上配置后,可以使用 Spring Boot 的测试工具来测试数据库连接是否正常。例如,可以使用 Spring Boot 的 `JdbcTemplate` 来执行一个简单的查询操作: ```java @RestController public class ...

    spring 数据库动态切换

    首先,我们要理解Spring如何支持多数据库连接。Spring通过DataSource接口来管理数据库连接,它提供了获取和管理数据库连接的方法。在实际应用中,我们通常会使用如Apache Commons DBCP或HikariCP这样的连接池实现。...

    spring和数据库层的结合

    1. **数据源配置**:Spring允许配置数据源,这样就封装了数据库连接的基本信息,并进行了优化处理。这种方式不仅可以提高性能,还能够减少代码量。 2. **模板模式**:Spring JDBC提供了`JdbcTemplate`类,这是一个...

    spring security与数据库交互实现简单例子

    3. **DataSource**: 在配置中,你需要指定用于存储用户信息的数据库连接。这通常是一个`BasicDataSource` bean,其中包含数据库URL、用户名和密码等信息。 4. **AuthenticationManager**: 这是Spring Security的...

    Spring.Net,Nhibernate多数据库操作

    首先,Spring.Net的核心特性之一是依赖注入,这使得我们能够轻松地更换数据库连接配置。通过配置Spring的ApplicationContext,我们可以定义多个数据源,并根据需要注入到相应的服务或组件中。例如,可以在XML配置...

    java web实现数据库连接

    《Java Web从入门到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,如何...

    spring的setter注入实现mysql数据库的连接

    这里,我们使用了`@Value`注解从应用的配置文件(如application.properties或application.yml)中读取数据库连接信息。 然后,我们需要创建一个DAO接口,该接口定义了与数据库交互的操作,例如: ```java public ...

Global site tag (gtag.js) - Google Analytics