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();
}
}
}
}
}
1.属性Spring的一个子框架,对JDBC进行了封装
....
@Autowired
private JdbcTemplate JdbcTemplate;
增删改:JdbcTemplate.update(sql,...);
查询:JdbcTemplate.query(sql,new BeanPropertyRowMapper(Employee.class));
2.web.xml中配置读取文件
启动SpringMVC
contextConfigLocation
classpath:applicationContext-mvc.xml
启动Spring
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
配置文件:jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///jdbcwork
jdbc.username=root
jdbc.password=root
注入使用
@Autowired
private JdbcTemplate jdbc;
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());
@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();
}
}
@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 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;
}