码迷,mamicode.com
首页 > 数据库 > 详细

SpringJDBC - 01

时间:2015-08-04 15:57:37      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:springjdbc

一开始学的是SSH框架,所以与数据库之间的操作都是有hibernate来完成的,现在了解了一些springJDBC发现原来spring框架已经把jdbc做了封装。不需要使用hibernate而仅用spring框架就可以完成数据库的增删改查操作了。下面就我初步springJDBC做一些简单的介绍:

(但是还是没有弄明白springJDBC相对于hibernate而言有什么优势。。。)


springJDBC的核心就是JdbcTemplate这个类,同个这个类我们可以很简单的完成对数据库的增删改查,省去了建立数据库连接Connection、预编译sql语句PrepareSatement及关闭释放数据库资源,只需要创建sql语句和接收处理结果。


代码由两部分构成:业务逻辑部门和和spring相关的XML部分

一、业务逻辑部分:

package com.wd.dao;

import org.springframework.jdbc.core.JdbcTemplate;

public class DeptDao {

private JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {

return jdbcTemplate;

}

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

this.jdbcTemplate = jdbcTemplate;

}


        public List findAll(){

String sql = "select * from dept";

return jdbcTemplate.queryForList(sql);

}

/*****************************************

* 查询

* @return

*/

public List<Dept> findAllDepts(){

List<Dept> depts = new ArrayList<Dept>();

String sql = "select * from dept where DEPTNAME = ?";

List list = jdbcTemplate.queryForList(sql, new Object[]{"htxx"});

Iterator iterator = list.iterator();

Dept dept = null;

while(iterator.hasNext()){

Map deptsMap = (Map)iterator.next();

dept = new Dept();

dept.setDeptSno(Integer.parseInt(deptsMap.get("DEPTSNO").toString()));

dept.setDeptName(deptsMap.get("DEPTNAME").toString());

dept.setLoc(deptsMap.get("LOC").toString());

depts.add(dept);

}

return depts;

}

/******************************************

* 删除

* @param deptSno

* @return

*/

public int delete(int deptSno){

String sql = "delete from dept where DEPTSNO = ?";

return jdbcTemplate.update(sql, new Object[]{deptSno});

}

/*******************************************

* 插入

* @param dept

* @return

* @throws UnsupportedEncodingException

*/

public int insert(Dept dept) throws UnsupportedEncodingException{

String sql = "insert into dept values(?,?,?)";

return jdbcTemplate.update(sql, 

                                           new Object[]{dept.getDeptSno(), dept.getDeptName(),

dept.getLoc()});

}

/*******************************************

* 批量插入

* @param paramsList

*/

public int[] batchInsert(final List<Dept> paramsList){

String sql = "insert into dept values(?,?,?)";

return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

@Override

public void setValues(PreparedStatement ps, int i) throws SQLException {

Dept dept = paramsList.get(i);

ps.setInt(1, dept.getDeptSno());

ps.setString(2, dept.getDeptName());

ps.setString(3, dept.getLoc());

}

@Override

public int getBatchSize() {

return paramsList.size();

}

});

}

}

二、applicationContext.xml配置,包括连接数据库信息dataSource、Template、dao

技术分享

然后写一个测试代码进行测试:

public static void main(String[] args) {

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

DeptDao deptDao = (DeptDao)ac.getBean("deptDao");


                //以插入单条数据为例

                Dept dept = new Dept();

dept.setDeptSno(120);

dept.setDeptName("htxx");

dept.setLoc("NO.18");

int row;

try {

row = deptDao.insert(dept);

System.out.println("row = "+row);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}


另外springJDBC中还有一些此处未提到的方法,我个人觉得只要搞明白了如何成功完成springJDBC的配置,使其能够和数据库连接成功,其他的都好说,毕竟人家已经给你定义好方法了,只需要传入正确的参数来调用就行了。


本文出自 “Java菜鸟” 博客,转载请与作者联系!

SpringJDBC - 01

标签:springjdbc

原文地址:http://6966010.blog.51cto.com/6956010/1681508

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!