- 浏览: 2290591 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
一 模板父类: SpringBaseDAO.java
二 应用类CGDAOImpl.java
三 CGRowMapper.java
四 applicationContext.xml
sql文件如下:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.jdbc.support.lob.OracleLobHandler; import org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor; import org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor; public class SpringBaseDAO extends JdbcDaoSupport{ private NativeJdbcExtractor nativeJdbcExtractor; protected OracleLobHandler lobHandler; private NamedParameterJdbcTemplate namedParameterJdbcTemplate; private SimpleJdbcTemplate simpleJdbcTemplate; public SpringBaseDAO() { setDataSource(ConnectionUtils.getDataSource()); namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(ConnectionUtils.getDataSource()); simpleJdbcTemplate = new SimpleJdbcTemplate(ConnectionUtils.getDataSource()); nativeJdbcExtractor = new WebLogicNativeJdbcExtractor(); lobHandler = new OracleLobHandler(); lobHandler.setNativeJdbcExtractor(nativeJdbcExtractor); getJdbcTemplate().setNativeJdbcExtractor(nativeJdbcExtractor); } public void close(Connection childConnection) throws SQLException { releaseConnection(childConnection); } public void close(Statement childStatement) throws SQLException { if (null != childStatement) { childStatement.close(); childStatement = null; } } public void close(CallableStatement childCallStatement) throws SQLException { if (null != childCallStatement) { childCallStatement.close(); childCallStatement = null; } } public void close(PreparedStatement childPsmt) throws SQLException { if (null != childPsmt) { childPsmt.close(); childPsmt = null; } } public void close(ResultSet childRs) throws SQLException { if (null != childRs) { childRs.close(); childRs = null; } } public void close(Connection childConnection, Statement childStatement) throws SQLException { close(childConnection); close(childStatement); } public void close(Connection childConnection, PreparedStatement childPsmt) throws SQLException { close(childConnection); close(childPsmt); } public void close(Connection childConnection, ResultSet childRs) throws SQLException { close(childConnection); close(childRs); } public void closeChild(Connection childConnection, Statement childStatement, ResultSet childRs) throws SQLException { close(childConnection, childStatement); close(childRs); } public void close(Connection childConnection, PreparedStatement childPsmt, ResultSet childRs) throws SQLException { close(childConnection, childPsmt); close(childRs); } public void close(PreparedStatement childPsmt, ResultSet childRs) throws SQLException { close(childPsmt); close(childRs); } public NativeJdbcExtractor getNativeJdbcExtractor() { return nativeJdbcExtractor; } public void setNativeJdbcExtractor(NativeJdbcExtractor nativeJdbcExtractor) { this.nativeJdbcExtractor = nativeJdbcExtractor; } public OracleLobHandler getLobHandler() { return lobHandler; } public void setLobHandler(OracleLobHandler lobHandler) { this.lobHandler = lobHandler; } public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() { return namedParameterJdbcTemplate; } public void setNamedParameterJdbcTemplate( NamedParameterJdbcTemplate namedParameterJdbcTemplate) { this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; } public SimpleJdbcTemplate getSimpleJdbcTemplate() { return simpleJdbcTemplate; } public void setSimpleJdbcTemplate(SimpleJdbcTemplate simpleJdbcTemplate) { this.simpleJdbcTemplate = simpleJdbcTemplate; } }
二 应用类CGDAOImpl.java
public interface CGDAO { public boolean save(CG cg); public boolean update(CG cg); public boolean del(CG cg); public CG get(CG cg); public List<CG> getCgData(String querySql); }
import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback; import org.springframework.jdbc.support.lob.LobCreator; import org.springframework.stereotype.Component; @Component("cgDao") public class CGDAOImpl extends SpringBaseDAO implements CGDAO { private static final String INSERT = "insert into COMMUNICATIONGROUPINGS(CGID,CGNAME,CGCOMMENT,USERID,USERNAME,CGTIME,CGIMAGE,CGTXT,IMGPATH,TXTPATH)VALUES(?,?,?,?,?,?,?,?,?,?)"; private static final String UPDATE = "update COMMUNICATIONGROUPINGS set CGNAME=?,CGCOMMENT=?,CGTIME=?,CGIMAGE=?,CGTXT=?,IMGPATH=?,TXTPATH=? where CGID=?"; private static final String GET = "select t.*,'' totalItems ,'' num from COMMUNICATIONGROUPINGS t where t.CGID=?"; private static final String DEL = "delete COMMUNICATIONGROUPINGS t where t.cgid=?"; public boolean del(CG cg) { Map<String, Object> params = new HashMap<String, Object>(); params.put("cgid", cg.getCgId()); return getJdbcTemplate().update(DEL, cg.getClass(), params) > 0; } @SuppressWarnings("unchecked") public CG get(CG cg) { CG dbCg = (CG) getJdbcTemplate().queryForObject(GET, new CGRowMapper(lobHandler), cg.getCgId()); return dbCg; } @SuppressWarnings("unchecked") public List<CG> getCgData(String querySql) { List<CG> cgList = getJdbcTemplate().query(querySql, new CGRowMapper(lobHandler)); return cgList; } public boolean save(final CG cg) { //abstractLobCreatingPreparedStatementCallback // return 0 < getJdbcTemplate().update(INSERT, // cg.getCgId(),cg.getCgName(),cg.getCgComment(),cg.getCgUserId(),cg.getCgUserName(),cg.getCgDateTime()); return getJdbcTemplate().execute(INSERT,new CGLobCreatingPreparedStatementCallback(lobHandler,cg)) > 0; } public boolean update(final CG cg) { /*return getJdbcTemplate().update(UPDATE, cg.getCgName(), cg.getCgComment(), cg.getCgDateTime(), cg.getCgId()) > 0;*/ return getJdbcTemplate().execute(UPDATE, new AbstractLobCreatingPreparedStatementCallback(lobHandler) { // ② protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException { int i=0; ps.setString(++i, cg.getCgName()); ps.setString(++i, cg.getCgComment()); ps.setString(++i, cg.getCgUserId()); ps.setString(++i, cg.getCgUserName()); ps.setString(++i, cg.getCgDateTime()); // ③ 设置 BLOB 字段 lobCreator.setBlobAsBytes(ps, ++i, cg.getCgImg()); // ④ 设置 CLOB 字段 lobCreator.setClobAsString(ps, ++i, cg.getCgTxt()); ps.setString(++i, cg.getImgPath()); ps.setString(++i, cg.getTxtPath()); ps.setString(++i, cg.getCgId()); } }) > 0; } }
三 CGRowMapper.java
import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.support.lob.AbstractLobHandler; @SuppressWarnings("unchecked") public class CGRowMapper implements RowMapper { private AbstractLobHandler lobHandler; public CGRowMapper(){} public CGRowMapper(AbstractLobHandler lobHandler){ this.lobHandler = lobHandler; } // 默认已经执行rs.next(),可以直接取数据 public Object mapRow(ResultSet rs, int index) throws SQLException { CG cg = new CG( rs.getString("CGID"), rs.getString("CGNAME"), rs.getString("CGCOMMENT"), rs.getString("CGTIME"), rs.getString("USERID"), rs.getString("USERNAME"), rs.getString("IMGPATH"), rs.getString("TXTPATH"), lobHandler.getBlobAsBytes(rs, "CGIMAGE"), lobHandler.getClobAsString(rs, "CGTXT"), rs.getString("totalItems"), rs.getString("num") ); return cg; } }
四 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.xxx" /> <context:property-placeholder location="classpath:db.properties" /> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>${DbJNDI}</value> </property> <property name="resourceRef"> <value>${RESOURCEREF}</value> </property> <property name="jndiEnvironment"> <props> <prop key="java.naming.provider.url"> ${Context.PROVIDER_URL} </prop> <prop key="java.naming.factory.initial"> ${Context.INITIAL_CONTEXT_FACTORY} </prop> </props> </property> </bean> <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="url" value="jdbc:mysql://localhost/spring_datasource" /> <property name="driverClassName" value="${dbdriver}" /> <property name="url" value="${constr}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </bean> --> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor" lazy-init="true" /> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor" /> </bean> <bean id="defaultLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" /> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <aop:config> <aop:pointcut id="bussinessService" expression="execution(public * com.xxx.*.service.*.*(..))" /> <aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="*" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="edit*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> </beans>
sql文件如下:
-- Create table create table COMMUNICATIONGROUPINGS ( cgid VARCHAR2(32), cgname VARCHAR2(60), cgcomment VARCHAR2(4000), userid VARCHAR2(32), username VARCHAR2(60), cgtime VARCHAR2(40) ) -- Add comments to the table comment on table COMMUNICATIONGROUPINGS is '通讯录分组'; -- Add comments to the columns comment on column COMMUNICATIONGROUPINGS.cgid is '主键ID'; comment on column COMMUNICATIONGROUPINGS.cgname is '通讯录组名'; comment on column COMMUNICATIONGROUPINGS.cgcomment is '备注'; comment on column COMMUNICATIONGROUPINGS.userid is '创建人ID'; comment on column COMMUNICATIONGROUPINGS.username is '创建人姓名'; comment on column COMMUNICATIONGROUPINGS.cgtime is ' 创建时间<YYYY-MM-DD hh:mm:ss>';
发表评论
-
Spring Task Schedule
2017-06-24 08:46 805链接:http://docs.spring.io/spring ... -
Sprint之java.util.Time
2011-07-06 16:17 1693参考资料 1 在Spring中使用JDK Timer进行任务调 ... -
java.util.Time结合Spring发送Email
2011-07-06 15:02 2013参考资料 1 Web项目下应用Java Timer定时器 ht ... -
Spring之Email<封装了常用的四种发送Email的方法(TEXT,HTML,IMG,FILE)>
2011-07-05 11:47 29804参考资料 1 Spring邮件发送(可带附件,模板,群发,异 ... -
SpringMVC:生成Excel和PDF
2011-06-07 17:18 25426参考资料 1 用spring MVC 生成Excel和PDF ... -
SpringMVC:整合JQUERY与JSON
2011-06-03 10:45 67811参考资料 1 Spring3 MVC 笔记(二) —json+ ... -
Spring:ContextLoaderListener作用
2011-06-02 10:18 32911参考资料 1 Spring之ContextLoaderList ... -
SpringMVC+JDBC:分页示例
2011-06-01 17:22 22056一 环境:XP3+Oracle10g+MyEclipse6+( ... -
SpringMVC:上传与下载
2011-06-01 16:46 27275参照了网上相关代码 注意事项: 1 springmvc.xm ... -
Spring配置JNDI(WebLogic92)NameNotFoundException: Unable to resolve解决
2011-03-15 16:01 22327请参见: Struts2.2+Spring3.1+Hiber ... -
Spring配置JNDI(Tomcat7)
2011-03-15 13:02 12125请参见: Struts2.2+Spring3.1+Hibern ... -
Struts2.2+Spring3.1+Hibernate3.6整合(登录示例及CRUD操作)
2011-03-01 13:26 20458一 运行环境: XP3+Myeclipse6.6+Tomcat ... -
spring整合hibernate关于 session的管理<三种方式>
2011-02-23 13:22 2442转载:spring整合hibernate关于 session的 ... -
Spring3 MVC Annotaction入门(登录示例)
2011-01-29 16:43 18916浏览资料 1 SpringMVC入门实例及详细讲解 http: ... -
Spring MVC入门(登录示例)
2011-01-26 10:09 17215一 环境: Myeclipse6.6+JDK1.5+Tomca ... -
spring3.0.5启动报错:org.springframework.beans.factory.BeanDefinitionStoreException
2011-01-24 16:33 42386一 开发环境:JDK5+Spring3.0.5+Myeclip ... -
转载:Spring(一)为什么要使用spring
2010-07-30 09:28 1348转载: Spring(一)为什么要使用spring http: ... -
spring的jar包详解
2009-09-19 11:05 1443转载:http://www.blogjava.net/li ...
相关推荐
Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...
4. 数据访问对象(DAO):负责与数据库的交互,使用Spring JDBC模板执行SQL查询和更新操作。 5. 模型(Model):数据对象,用于在服务层和视图层之间传递数据。 6. 视图:可能包含JSP页面或其他模板技术,用于展示...
6. **测试**:使用SpringJDBC进行依赖注入测试,我们可以确保在测试环境中正确配置了数据源,并能有效验证依赖注入是否正常工作,以及业务逻辑是否正确执行。 这个"手写Spring IOC注解实现版本"项目会涵盖以上所有...
首先,SpringJDBC提供了一个抽象层,它将传统的JDBC API封装起来,减少了手写模板代码的需求,使得数据库操作更加简洁、易读。通过使用Spring的JdbcTemplate和NamedParameterJdbcTemplate,开发者可以避免处理连接...
再者,Spring提供了多种数据访问集成,包括JDBC模板、ORM(Object-Relational Mapping)框架如Hibernate和MyBatis的集成。在我们的简化版本中,可能会看到一个简单的JdbcTemplate的实现,它降低了直接操作数据库的...
此外,Spring还提供了对数据访问的强大支持,如JDBC模板、Hibernate、MyBatis等ORM框架的集成。通过Spring Data JPA或Spring Data MongoDB,我们可以轻松地进行数据库操作,实现CRUD功能。 最后,模拟Spring的实现...
- 集成数据访问层,例如JDBC模板,理解如何处理数据库操作。 - 虽然Spring1.0没有Spring MVC,但可以尝试模拟实现简单的请求调度和视图渲染,以便更好地理解MVC的工作流程。 此外,对于初学者来说,阅读Spring1.0的...
3. **Spring JDBC**:简化了JDBC操作,提供了模板类和数据源抽象,减少了手写SQL和处理结果集的繁琐工作。 4. **Spring ORM**:集成各种ORM框架,如Hibernate、JPA,使得数据库操作更加方便。在SSH框架中,Spring与...
5. **Spring JDBC**: 提供了一层抽象,简化了与数据库的交互,包括数据源管理、JDBC模板以及事务处理。它避免了手动管理连接、结果集映射等繁琐工作。 6. **Spring ORM**: 集成了多种ORM(对象关系映射)框架,如...
1. **JDBC模板**:Spring的JdbcTemplate是处理JDBC操作的一种抽象,它可以自动处理资源的关闭、异常处理等繁琐工作,避免了手写大量重复的JDBC代码。 2. **ORM框架集成**:Spring支持多种Object-Relational Mapping...
8. **spring-jdbc**: 提供了对JDBC的抽象层,简化了数据库访问,减少了手写SQL和处理结果集的工作。它支持事务管理、数据源配置和模板方法模式,以提高可读性和可维护性。 9. **spring-orm**: 提供了对流行ORM...
`JdbcTemplate`是Spring JDBC提供的核心接口,它简化了与数据库的交互,避免了手写大量的JDBC模板代码。通过使用`JdbcTemplate`,我们可以轻松地执行SQL查询、更新、插入和删除操作。 在MySQL环境中配置Spring JDBC...
Spring JDBC模块提供了一组模板类(如JdbcTemplate和SimpleJdbcInsert),简化了数据库操作。ORM(对象关系映射)支持让开发者能轻松地在Java对象和数据库表之间建立映射,减少了手写SQL的需求。 四、事务管理 ...
在数据访问层,Spring 提供了多种方式来操作数据库,其中 `JdbcTemplate` 是一个简单且强大的工具,它封装了 JDBC API,使得数据库操作变得更加简洁和安全。`JdbcTemplate` 减少了手写 SQL 和处理结果集的繁琐工作,...
Spring还提供了对数据库操作的支持,如JDBC模板,以及与各种持久层框架(如Hibernate和MyBatis)的集成。 **Mybatis框架** Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。相比于传统的...
它抽象了数据库连接的创建、关闭以及SQL语句的执行,避免了手写大量重复的JDBC代码。在用户管理功能中,JDBCTemplate用于执行CRUD(创建、读取、更新、删除)操作,例如添加新用户、查询用户信息、修改用户信息和...
Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3. **...
它通过模板类如JdbcTemplate和SimpleJdbcInsert等,减少了手写JDBC代码的工作量。 4. **Spring对ORM框架的支持**: - **Hibernate集成**:Spring提供了一套完整的Hibernate支持,包括SessionFactory的配置、事务...
在Spring JDBC中,RowMapper接口用于将数据库查询结果的一行映射为一个Java对象。生成RowMapper代码时,通常会为每个DTO创建一个对应的RowMapper实现,这样可以在处理数据库查询结果时,方便地将结果集转换为DTO...
Spring还支持数据访问抽象,包括JDBC模板和ORM(对象关系映射)集成,如Hibernate和MyBatis。这使得数据库操作变得更加简单,避免了手写SQL和处理结果集的麻烦。PPT可能包含如何配置和使用这些数据访问技术的内容。 ...