1. Spring框架对JDBC进行了简单的封装, 通过new JDBCTemplate(DataSource ds)构造方法来传入数据源DataSource,获得JDBCTemplate对象,再通过JDBCTemplate对象的具体方法来实现对数据库的CURD操作。这里的DataSource 即为数据库连接池,可以通过Druid数据库连接技术来获得, 一般在工具类中来完成此功能,代码如下:public class JDBCUtils {
// 定义成员变量DataSoure
private static DataSource ds;
// 静态代码初始化连接池
static {
try{ // 获取配置文件的信息
Properties prop = new Properties();
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
prop.load(is);
// 获取Datasource
ds = DruidDataSourceFactory.createDataSource(prop);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
// 定义获取连接的方法
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
// 返回连接池
public static DataSource getDataSource(){
return ds;
}
//释放资源方法 针对数据库查询操作
public static void close(ResultSet rs, Statement statement, Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} //释放资源的重载方法 针对数据库增删改操作 public static void close(Statement statement, Connection conn){
close(null, statement, conn);
}
}2. 在得到JDBCTemplate对象之后,要对数据库进行增删改查的操作,实现代码如下:public class JdbcTemplateDemo01 {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
// 修改数据
@Test
public void test1(){
template.update("update user set username = ? where id = ?", "zhangsang", 1);
}
// 添加数据
@Test
public void test2(){
template.update("insert into user values (?, ?, ?)", null, "yang", "zdlaslsy");
}
// 删除数据
@Test
public void test3(){
template.update("");
}
// 查询单条数据,封装为map
@Test
public void test4(){
String sql = "select * from emp where id = ?";
Map<String, Object> map = template.queryForMap(sql, 1001);
System.out.println(map);
}
// 查询多条数据,封装为List
@Test
public void test5(){
String sql = "select * from emp ";
List<Map<String, Object>> list = template.queryForList(sql);
System.out.println(list);
}
// 查询所有记录,将其封装为Emp对象的List的集合
@Test
public void test6(){
String sql = "select * from emp";
List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for(Emp emp:list){
System.out.println(emp);
}
}
}
|
|