jdbc获取连接的三种方法

一、jdbc

1.导包
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
mysql-connector-java-5.1.26-bin.jar
2.配置文件:mysql.properties


url=jdbc:mysql://127.0.0.1:3306/day03?charactorEncoding=utf8
username=root
password=root
driverClassName=com.mysql.jdbc.Driver
initialSize=10
maxActive=10
maxIdle=10

3.创建工具类

package cn.itsource.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

/**
 *	获取连接和关闭流
 */
public class JdbcUtil {
	private static final JdbcUtil INSTANCE = new JdbcUtil();
	
	private JdbcUtil(){
		
	}
	
	public static JdbcUtil newInstance(){
		return INSTANCE;
	}
	
	/**
	 * 获取连接方法
	 * @return
	 * @throws Exception 
	 */
	public Connection getConn() throws Exception{
		//1.获取当前类加载器对象
		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
		
		//2.获取输入流
		InputStream is = classLoader.getResourceAsStream("mysql.properties");
		
		//3.创建Properties对象
		Properties properties = new Properties();
		
		//4.Properties对象将配置信息加载到内存
		properties.load(is);
		
		//5.获取工厂类对象
		DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
		
		//6.通过工厂类对象创建连接池对象
		Connection conn = dataSource.getConnection();
		
		//7.返回连接池对象
		return conn;
	}
	
	public void close(ResultSet result,PreparedStatement statement,Connection conn){
		try {
			if (result != null) {
				result.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

二、SpringJDBC

1.属性Spring的一个子框架,对JDBC进行了封装

<bean id="dataSource">....</bean>
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 	<property name="dataSource" ref="dataSource" />
 </bean>
 
 @Autowired
 private JdbcTemplate JdbcTemplate;
 增删改:JdbcTemplate.update(sql,...); 
 查询:JdbcTemplate.query(sql,new BeanPropertyRowMapper<Employee>(Employee.class));

2.web.xml中配置读取文件
启动SpringMVC

<servlet ....>
		<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>classpath:applicationContext-mvc.xml</param-value>
  		</init-param>
	</servlet>

启动Spring

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 	代表配置Spring的核心文件的位置 -->
<context-param>
	 <param-name>contextConfigLocation</param-name>
	 <param-value>classpath:applicationContext.xml</param-value>
</context-param>




配置文件:jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///jdbcwork
jdbc.username=root
jdbc.password=root

注入使用

@Autowired
	private JdbcTemplate jdbc;

三、QueryRunner使用

  • 使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作–DBUtils
  • 什么是dbutils
    它的出现就是封装了jdbc的代码,开发dao层代码的简单框架,dbutils是由apache公司提供的
  • 作用
    DbUtils类主要负责装载驱动、关闭连接的常规工作

1.导包
commons-dbcp-1.4.jar
commons-dbutils-1.6.jar
commons-pool-1.5.6.jar
mysql-connector-java-5.1.26-bin.jar

2.配置文件:jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///jdbcwork
jdbc.username=root
jdbc.password=root

3.创建一个工具类:DButils类DbcpUtils.java

package cn.itsource.utils;

import java.io.IOException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DbcpUtils {
	/**私有化构造*/
	private DbcpUtils(){}
	
	private static DataSource dataSource;
	
	//类加载的时候执行一次 
	static{
		try {
			Properties p = new Properties();
	//通过Properties对象调用load加载到内存
	//获取当前的线程的类加载器对象,通过类加载器对象获取输入流
	p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("cn/itsource/utils/dbcp.properties"));
			//利用工厂模式创建一个连接池对象
			dataSource = BasicDataSourceFactory.createDataSource(p);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取数据库连接池
	 * @return
	 */
	public static DataSource getDataSource(){
		return dataSource;
	}

}

使用

//QueryRunner就是JDBC的工具类  执行增删改查的SQL语句
	private QueryRunner qr = new QueryRunner(DbcpUtils.getDataSource());
  • update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。
@Override
	public void add(Student s) {
			String sql ="insert into student(name,sex,age,birthDay) values(?,?,?,?)";
			try {
				qr.update(sql, s.getName(),s.getSex(),s.getAge(),s.getBirthDay());
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
  • query执行查询
    查看一条
@Override
	public Student findOneById(Long id) {
		String sql="select * from student where id=?";
		
		try {
			return qr.query(sql, new BeanHandler<>(Student.class),id);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

查所有

@Override
	public List<Student> findAll(Integer pageNo, Integer pageSize) {
		String sql="select *  from student ";
		  try {
			return qr.query(sql, new BeanListHandler<>(Student.class));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
  • MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
    ScalarHandler:将结果集第一行的某一列放到某个对象中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值