Java实现的中间库
来源:互联网 发布:淘宝卖家开不了花呗 编辑:程序博客网 时间:2024/05/21 10:56
数据库与数据库之间的数据交互
1. 背景
中间库主要用于解决一个大系统多个数据库,其中多个数据库作用是:用于备份数据或者用于存储业务数据等;中间库还可以用于解决两个系统间的接口问题,2个系统共同操作这个中间数据库进行数据的交互。
2. 环境
本实例使用的数据库都是MYSQL,还充分利用了Spring的IOC注入和JdbcTemplate技术。将以下Jar包导进java工程:commons-logging-1.0.4.jar、mysql-connector-java-5.0.3-bin.jar和spring.jar。MYDB数据库是应用系统的数据库,MYTEMPDB数据库是中间数据库;一个应用系统向这个中间库写数据,另一个系统从中间库获取数据。
3.新建数据库,在MySql中执行如下脚本:
#############################################################################################CREATE DATABASE MYDB;use MYDB;Drop TABLE IF EXISTS `MYDB`.`student`;Create TABLE `MYDB`.`student` (`name` varchar(40) NOT NULL,`psw` varchar(10) NOT NULL,`enabled` boolean);insert into student values("lanp","lanpiao",true);insert into student values("ph","ph",true);insert into student values("wxh","wxh",true);###############################################################CREATE DATABASE MYTEMPDB;use MYTEMPDB;Drop TABLE IF EXISTS `MYTEMPDB`.`student`;Create TABLE `MYTEMPDB`.`student` (`name` varchar(40) NOT NULL,`psw` varchar(10) NOT NULL,`enabled` boolean);#############################################################################################
4.在Java工程的src下面新建beans.xml文件,用于配置Spring的注入信息,代码如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- ================================MYDB数据源及DAO层配置===================================== --> <bean id="dataSourceOfMyDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://127.0.0.1:3306/MYDB</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>157891</value> </property> </bean> <bean id="jdbcTemplateOfMyDb" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"><ref bean="dataSourceOfMyDb"/></property></bean><bean id="myDbStudentDao" class="com.lanp.dao.MyDbStudentDaoJdbc"> <property name="jdbcTemplate"><ref bean="jdbcTemplateOfMyDb"/></property></bean> <!-- ================================MYTEMPDB数据源及DAO层配置===================================== --> <bean id="dataSourceTempDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://127.0.0.1:3306/MYTEMPDB</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>157891</value> </property> </bean> <bean id="jdbcTemplateTempDb" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"><ref bean="dataSourceTempDb"/></property></bean><bean id="tempDbStudentDao" class="com.lanp.dao.TempDbStudentDaoJdbc"> <property name="jdbcTemplate"><ref bean="jdbcTemplateTempDb"/></property></bean></beans>
5.新建MyDbStudentDaoJdbc类,用于获取本系统中要写入中间库的数据,代码如下:
package com.lanp.dao;import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;/** * 操作应用系统DAO层 * @author LanP * @since 2011-11-04 15:00 * @version V1.0 */public class MyDbStudentDaoJdbc {private JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;} @SuppressWarnings("unchecked")public List getAllStudents() {String sql = "select * from student"; List students = jdbcTemplate.queryForList(sql);return students;}}
6.新建TempDbStudentDaoJdbc类,用于向中间库写数据,代码如下:
package com.lanp.dao;import java.util.Map;import org.springframework.jdbc.core.JdbcTemplate;/** * 操作中间库DAO层 * @author LanP * @since 2011-11-04 15:00 * @version V1.0 */public class TempDbStudentDaoJdbc {private JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;} @SuppressWarnings("unchecked")public int setStudents(Map student) {int result = 0;if(null != student) {if(null != student.get("name") && !"".equals(student.get("name"))&& null != student.get("psw") && !"".equals(student.get("psw"))&& null != student.get("enabled") && !"".equals(student.get("enabled"))) {String sql = "insert into student values(?,?,?)";result = jdbcTemplate.update(sql, new Object[]{student.get("name"),student.get("psw"),student.get("enabled")});}}return result;}}
7.新建MyDbPutDataToTemp类,用于测试,代码如下:
package com.lanp;import java.sql.SQLException;import java.util.List;import java.util.Map;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lanp.dao.MyDbStudentDaoJdbc;import com.lanp.dao.TempDbStudentDaoJdbc;/** * 将MYDB数据库中的Student表的信息写进中间数据库MYTEMPDB表Student * @author LanP * @since 2011-11-04 15:00 * @version V1.0 */public class MyDbPutDataToTemp {/** * 入口 * @param args * @throws SQLException */@SuppressWarnings("unchecked")public static void main(String[] args) throws SQLException {//1.初始化beans.xml文件ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");//2.获取MYDB数据库Student表中的内容MyDbStudentDaoJdbc myDbStudentDaoJdbc = (MyDbStudentDaoJdbc)ctx.getBean("myDbStudentDao");//3.MYTEMPDB数据库表的DAOTempDbStudentDaoJdbc tempDbStudentDaoJdbc = (TempDbStudentDaoJdbc)ctx.getBean("tempDbStudentDao");//4.将MYDB数据库Student表中的内容插入MYTEMPDB数据库Student表List students = myDbStudentDaoJdbc.getAllStudents();if(null != students && students.size() > 0) {for(int i=0;i<students.size();i++) {Map student = (Map)students.get(i);if(null != student) {int result = tempDbStudentDaoJdbc.setStudents(student);if(1 == result) {System.out.println("成功向MYTEMPDB中间数据库Student表插入一条数据!");} else {System.out.println("向MYTEMPDB中间数据库Student表插入一条数据失败!");}}}}}}
OK,TKS!
- Java实现的中间库
- java 集合框架中间迭代器的使用和实现原理
- Java实现寻找链表的中间节点
- java实现某个月的第一天/中间结束/中间开始/下个月的第一天的算法
- java的中间缓存变量
- java有关String操作,实现中间 * 显示
- CCF 201612-1 中间数 JAVA实现
- Java学习 - 不借助中间变量实现实现两个数结果的互换
- 巧用C#做中间语言 实现Java调用.net DLL的方法
- 18、不使用中间变量,实现两个数的交换 JAVA
- 巧用C#做中间语言 实现Java调用.net DLL的方法
- 【Java】实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点
- Java-实现两个int类型变量值的交换,要求不使用中间变量
- 实现一个靠左靠右靠中间的listview
- 实现Activity数据中间的协同
- 只有中间有边框的实现
- Java和.Net的共性:中间语言
- java中去掉字符串中间的空格
- javascript 中 方法call()的理解
- 戏说语义网——简介
- 正则表达式--笔记与实战(Eclipse文本替换)
- jquery+autocomplate+表单自动完成
- auto”不能与任何其他类型说明符组合小
- Java实现的中间库
- window.showModalDialog弹出窗口翻页时弹出新窗口的问题
- hibernate 原生sql的使用
- 调整viewstate位置
- 怎样花两年时间去面试一个人-----刘未鹏
- 产品管理工作的文档管理
- Objective C 中NSNumber的引用计数
- ConcurrentLinkedQueue原理(上)
- DirectX9 实现一个渐变三角形