Spring JdbcTemplate详解及项目中的运用

1.Spring对不同的持久化支持:

Spring为各种支持的持久化技术,都提供了简单操作的模板和回调

ORM持久化技术 模板类
JDBC org.springframework.jdbc.core.JdbcTemplate
Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate
IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate
JPA org.springfrmaework.orm.jpa.JpaTemplate

2.JdbcTemplate简介

  Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。

  JdbcTemplate位于中。其全限定命名为org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制

  

3.JdbcTemplate主要提供以下五类方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

  • query方法及queryForXXX方法:用于执行查询相关语句;

  • call方法:用于执行存储过程、函数相关语句。

4.batchUpdate()批量插入、更新和删除方法

 

复制代码
1 String sql="insert into user (name,deptid) values (?,?)";
2 
3 List<Object[]> batchArgs=new ArrayList<Object[]>();
4 batchArgs.add(new Object[]{"caoyc",6});
5 batchArgs.add(new Object[]{"zhh",8});
6 batchArgs.add(new Object[]{"cjx",8});
7 
8 jdbcTemplate.batchUpdate(sql, batchArgs);
复制代码

项目实战

对应的sql:

private static final String QUERY_SQL = "SELECT pk_sr_main,mdjlx FROM sr_main WHERE pk_sr_main = ?"; //从主表中找主键和救助类型
private static final String QUERY_SQL_SFCF = " select file_num from electronicarchives where fk_sr_main = ? "; //查找文件夹名称
private static final String DELETE_SQL = " delete from electronicarchives where fk_sr_main = ? "; //删除e表中主键重复的数据

private static final String INSERT_SQL = "insert into electronicarchives(file_num,DATA_NAME,DATA_PATH,DATA_SIZE,DATA_TYPE,SXBM,SXBBH,SECRET,QYM,DEPT_CODE,MD5,ARG,SXMC,SPECI_SYSTEM,XTBM,CODE,IS_SHARE,IS_ARCHIVED,UPDATE_TIME,fk_sr_main,mdjlx,createtime,clbj) VALUES(uuid(),'000','000','0','0','000','000','000','000','000','000','1','000','000','000','000','1','0',sysdate(),?,?,sysdate(),'0') ";

String gdpz_query_sql = "select a.fname,a.fpath,c.FCAPTION,case when fmin>0 then '必要' else '非必要' end as sfby " +
"from mz_file a,file_set b,file_cate c " +
"where a.fdbid=? and a.fmodel=? and b.SMODEL=a.fmodel and b.PK_FILE_SET=c.FK_FILE_SET and a.FUPCODE=c.fcode order by c.FSORT";
String gdpz_insert_sql = "insert into st_dzda_gdpzb(pk_dzda_gdpzb,fk_sr_main,servicecode,servicename,deptname,retentionperio,version,filename,auxiliaryone,auxiliarytwo,auxiliarythree,deptid,eventtype,fileurl) values(uuid(),?,?,?,?,?,?,?,?,?,?,?,?,?)";
String gdpz_delete_sql = "delete from st_dzda_gdpzb where fk_sr_main = ?";

String update_electronicarchives_sql = "update electronicarchives set file_num=?,data_name=?,clbj=1 where fk_sr_main = ?";

增:

AspDaoUtil.getJdbcTemplate().executeUpdate(INSERT_SQL,new Object[]{

pkid,field_main.get("mdjlx") 
});

删:

AspDaoUtil.getJdbcTemplate().executeUpdate(DELETE_SQL,new Object[]{
pkid
});

改:

AspDaoUtil.getJdbcTemplate().executeUpdate(update_electronicarchives_sql,new Object[]{
dzwjh,dzwjh,pk_id
});

查1:查询条件为主键,数据唯一

FieldList field_main = AspDaoUtil.getJdbcTemplate().queryField(QUERY_SQL, new Object[]{ pkid });

查2:查询条件不为主键,数据可能出现多条

RowList rowList_gdpz = AspDaoUtil.getJdbcTemplate().queryRowList(gdpz_query_sql, new Object[]{pk_id,mdjlx});
for (int r = 0; r < rowList_gdpz.size(); r++) {
FieldList field_gdpz = rowList_gdpz.get(r);

int xh = r + 1;
fjmc = field_gdpz.get("FCAPTION")+xh;
fileurl = field_gdpz.get("fpath");

AspDaoUtil.getJdbcTemplate().executeUpdate(gdpz_insert_sql,new Object[]{
pk_id,qlsxbm,qlsxmc,bmmc,bgqx,sxbbh,fjmc,field_gdpz.get("sfby"),fzxx2,"",bmbm,qlsxlx,fileurl
});
}

猜你喜欢

转载自www.cnblogs.com/tongcc/p/11011846.html