1、使用工具类及其配置文件的方法,连接后台的数据库
【优点:可以连接不同的数据库,对数据库的类型进行了逐一的设置】
【缺点:对数据库操作的sql语句的编写,比较单一,当进行数据库表操作时,sql语句需要写在相应的方法内,当出错时,改起来不好找,比较麻烦】
init.properties数据库的相关属性对象的配置
ip=127.0.0.1 //ip地址 port=1433 //端口号 dbtype=sqlServer //数据库类型 dbname=fdx //数据库名 username=sa //用户名 password=abc1234565 //密码
DBUtils工具类【连接数据库的工具包】
package com.fdx.Utils;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtils {
	private static Properties p = new Properties();
	static{
		try {
			p.load(DBUtils.class.getResourceAsStream("init.properties"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("没有找到配置文件");
		}
	}
	//创建连接数据库连接
	public static Connection getConnection() {
		Connection conn = null;
		String ip = p.getProperty("ip").trim().toLowerCase();
		String port = p.getProperty("port").trim().toLowerCase();
		String dbname = p.getProperty("dbname").trim().toLowerCase();
		String dbtype = p.getProperty("dbtype").trim().toLowerCase();
		String username = p.getProperty("username").trim().toLowerCase();
		String password = p.getProperty("password").trim().toLowerCase();
       /**
        *根据dbtype的不同,选择不同的数据库类型
        *
        /
		if (dbtype.equals("oracle")) {//连接Oracle数据库
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
			} catch (ClassNotFoundException e) {
				System.out.println("驱动类没找到"+e.getMessage());
			}
			//获取连接对象
			StringBuffer url = new StringBuffer();
			url.append("jdbc:oracle:thin:@");
			url.append(ip);
			url.append(":");
			url.append(port);
			url.append(":");
			url.append(dbname);
			 try {
				conn= DriverManager.getConnection(url.toString(),username,password);
			} catch (SQLException e) {
				System.out.println("数据库连接项错误");
			} 
		}
		if (dbtype.equals("mysql")) {//连接MySQL数据库
          //MySql数据库的url是这个样子的:
          //jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8
            try {
				Class.forName("org.gjt.mm.mysql.Driver");
			} catch (ClassNotFoundException e) {
				System.out.println("驱动类没找到"+e.getMessage());
			}
			//获取连接对象
			StringBuffer url = new StringBuffer();
			url.append("jdbc:mysql://");
			url.append(ip);
			url.append(":");
			url.append(port);
			url.append("/");
			url.append(dbname);
			 try {
				conn= DriverManager.getConnection(url.toString(),username,password);
			} catch (SQLException e) {
				System.out.println("数据库连接项错误");
			} 
           } if (dbtype.equals("sqlserver")) {
              //连接SqlServer数据库,url路径格式是一定的:jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=fdx,
              //其中端口号后面必须使用分号,使用其他的是行不通的
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			} catch (ClassNotFoundException e) {
				System.out.println("驱动类没找到"+e.getMessage());
			}
			//获取连接对象
			StringBuffer url = new StringBuffer();
			url.append("jdbc:sqlserver://");
			url.append(ip);
			url.append(":");
			url.append(port);
			url.append(";");
              url.append("DatabaseName=");
			url.append(dbname);
			 try {
				conn= DriverManager.getConnection(url.toString(),username,password);
			} catch (SQLException e) {
				System.out.println("数据库连接项错误");
			} 
		}
		return conn;
	}
	
	//关闭数据库中的连接对象
		public static void close(Connection conn,PreparedStatement pstat,ResultSet rs){
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(pstat != null){
				try {
					pstat.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(rs != null){
				try {
					rs.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}
}
方法二:使用Spring+iBatis框架的方式,专门有一个XXXsqlMap.xml配置文件,专门放sql语句的文件,设计到sql语句的方法中,直接调用即可【自己测试的有dao接口,其中的方法名要与sqlMap中的sql语句的id值相一致的,这样子才可以与后台数据库建立联系;】
--------{实体类、实体类sqlMap配置文件,都可以直接生成出来的,具体直接生成的方式,待续中,,,,,}
连接数据库的属性对象配置文件config.properties
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver validationQuery=SELECT 1 jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=fdx jdbc_username=sa jdbc_password=abc123456
然后再在spring-mybatis.xml配置文件中,配置有关连接数据库的相关信息【即数据源】
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
	  <property name="driverClassName" value="${driverClassName}"></property>
		<property name="url" value="${jdbc_url}" />
		<property name="username" value="${jdbc_username}" />
		<property name="password" value="${jdbc_password}" />
......
在相应的sqlMap配置文件中配置有关的sql语句
......
dao接口中,方法名要与sqlMap配置文件中的sql的id值相一致的【切记】
比如:
public interface UserDao {
	// 根据id查询用户信息(ok)
	public User selectByPrimaryKey(String id);
	// 查询所有信息(ok)
	public List<User> getAll();
	// 查询最大id值(ok)
	public String selectMaxId();
	// 删除用户信息【根据id】(ok)
	public void deleteByPrimaryKey(String id);
	// 插入用户信息(ok)
	public void insert(User user);
	// 有选择性的插入操作(ok)
	public void insertSelective(User user);
service业务逻辑接口
public interface UserService {
	public User getUserById(String id);//(ok)
//	public void deleteById(String id);//(ok)
	public void insertUser(User user);//(ok)
	public List<User> getAllUser();//(ok)
//	public void update(User user);//(ok)根据id修改用户密码,姓名,角色,生日
	public void insertSelect(User user);//选择性的插入操作(ok)
serviceImpl实现类
package fdx.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import fdx.dao.UserDao;
import fdx.model.User;
import fdx.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService {
	
	private UserDao userDao;
	
	public UserDao getUserDao() {
		return userDao;
	}
	@Autowired
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	//根据id查询用户信息(ok)
	public User getUserById(String id) {
		return userDao.selectByPrimaryKey(id);
	}
	//根据id删除用户信息
	public void deleteById(String id) {
		System.out.println("删除用户id"+id);
		System.out.println("用户信息的名字:"+userDao.selectByPrimaryKey(id).getName());
		userDao.deleteByPrimaryKey(id);
		System.out.println("已删除成功!!");
	}
	//插入用户信息,主键自动增长(ok)
	public void insertUser(User user) {
		//调用方法,获取到最大的id值
		String id = userDao.selectMaxId();
		System.out.println("获取到的最大id值:"+id);
		int num = Integer.parseInt(id.trim());//再没有trim()方法时,出现异常;Integer.parseInt(str),参数只能是纯数字的组合才能转换,所以使用trim()方法,进行去除一下空格;且得到的id值里面有空格的存在;
		num = num +1;
		//将数字转换成字符串格式
		String sid = String.valueOf(num);
		//对主键id,出生日期(获取到当前系统的日期)进行设置;
		user.setId(sid);
		user.setBirth(new Date());
		userDao.insert(user);
		System.out.println("插入之后:测试成功");
	}
	//查询所有用户信息(ok)
	public List<User> getAllUser() {
		List<User> list = null;
		list = userDao.getAll();
		return list;
	}
}
进行JUnit测试【模块式的测试方式】
package fdx.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.Request;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import sun.applet.Main;
import fdx.model.User;
import fdx.service.UserService;
public class TestMy {
	@Test
	public void test(){
		ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { "spring.xml", "spring-mybatis.xml"});
		UserService us = (UserService) ac.getBean("userService");
		//根据id查询用户
//		System.out.println(us);
		User u = us.getUserById("1002");
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println(u.getId()+u.getName()+u.getPwd()+sf.format(u.getBirth()));	
    }
}
其中spring.xml配置文件中相应的内容:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <!-- 引入属性文件,用于连接数据库、classpath表示的是src/main/resources目录下 --> <context:property-placeholder location="classpath:config.properties" /> <!-- 自动扫描(自动注入) ,扫描相应的service包--> <context:component-scan base-package="fdx.service" /> <context:annotation-config/> </beans>
得到的结果是:
1002 hahah 000000 2015-09-24
【接触到的项目,使用的也是SSI框架,其中与数据库的连接,对后台数据库进行的操作,也是使用的sqlMap配置文件配置sql语句,然而不同的是,她们封装好的类用来获取sqlMap中sql的id值,进而得到相应的sql语句,直接调用类中的方法就可以得到想要的sql语句。,进而实现对后台数据库进行相应的操作!!!】
原文:http://www.cnblogs.com/FanSunny/p/4883090.html