java中间常用的类_Java实现的中间库 | 学步园

数据库与数据库之间的数据交互

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的注入信息,代码如下:

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/MYDB

root

157891

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/MYTEMPDB

root

157891

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数据库表的DAO

TempDbStudentDaoJdbc 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

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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值