- 浏览: 756750 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
先道要加上两个包:Spring2.5下面的: spring.jar和commons-logging.jar
我用的DBCP数据源,Connection工具类我就没写了
具体的实例说明:
public class StuDaoImple implements StuDaointer {
private JdbcTemplate jdbctemp = null;
public StuDaoImple() {
jdbctemp = new JdbcTemplate(SQLConnUtil.getDataSource());
}
// 所有添,删,改的方法都可以用jdbctemp.update();方法
public void addStu(Stu stu) {
String sql = "insert into stu values(?,?,?)";
Object[] obj = new Object[] { stu.getSname(), stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()) };
jdbctemp.update(sql, obj);// 可以传两个参数,第一个参数是SQL语句,第二个参数是SQL语句的参数值
}
public void delStu(int sid) {
String sql = "delete stu where s_id=" + sid;
jdbctemp.update(sql);// 可以传一个参数,就是没有参数的SQL语句
}
public void updStu(Stu stu) {
String sql = "update stu set s_name=?,s_sex=?,s_brith=? where s_id=?";
Object[] obj = new Object[] { stu.getSname(), stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()), stu.getSid() };
jdbctemp.update(sql, obj, new int[] { Types.VARCHAR, Types.VARCHAR,Types.DATE, Types.INTEGER });
// 可以传两个参数,第一个参数是SQL语句,第二个参数是SQL语句的参数值,第三个参数是SQL语句参数值的SQL类型
}
//查询1
public List getAllStu() {
String sql="select s_id,s_name,s_sex,s_brith from stu";
List list=jdbctemp.query(sql, new RowMapper(){
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
Stu stu=new Stu();
if(arg0!=null){
stu.setSid(arg0.getInt("s_id"));
stu.setSname(arg0.getString("s_name"));
stu.setSsex(arg0.getString("s_sex"));
stu.setSbrith(arg0.getDate("s_brith"));
}
return stu;
}
});
return list;
}
//查询2
public List getAllStu(int id) {
String sql="select s_id,s_name,s_sex,s_brith from stu where s_id<?";
Object[] obj=new Object[]{id};
//使用内部类
List list=jdbctemp.query(sql,obj,new RowMapper(){
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
Stu stu=new Stu();
if(arg0!=null){
stu.setSid(arg0.getInt("s_id"));
stu.setSname(arg0.getString("s_name"));
stu.setSsex(arg0.getString("s_sex"));
stu.setSbrith(arg0.getDate("s_brith"));
}
return stu;
}
});
return null;
}
//查询方式3(查询一个对象)
public Stu getOneStu(int id) {
String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?";
Object[] obj=new Object[]{id};
Object stu=jdbctemp.queryForObject(sql, obj,new BeanPropertyRowMapper(Stu.class));
//可以不用内部类,但是类的属性字段名称要数据库中的字段名称一样或者数据库字段名为s_id类的名称为SId,
//如果你没有遵守这个规范则可以在select语句后面给数据库字段名取别名
//上面的查询也可以这种方式
return (Stu)stu;
}
//查询方式4(查询一个字段)
public String getStuName(int sid) {
String sql="select s_name as sname from stu where s_id=?";
Object[] obj=new Object[]{sid};
Object stuname=jdbctemp.queryForObject(sql, obj, String.class);
//String.class即是指明一下结果的类型
return (String) stuname;
}
//查询方法5
public int count(){
String sql="select count(*) from stu";
int m=jdbctemp.queryForInt(sql);
return m;
}
//查询方法6 查询结果返回的是map,map中的key为select中的列名(若有别名是是别名)value是该列所对应的值
public Map getStuinMap(int sid){
String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?";
Object[] obj=new Object[]{sid};
return jdbctemp.queryForMap(sql, obj);
}
//查询方法7 若你不想用spring封装好了的操作,你可以自己写.Connection的打开和关闭它已经写好了,其它的操作自己可以去完成
public int getMyQuery(final Stu stu){
Object obj=jdbctemp.execute(new ConnectionCallback(){
public Object doInConnection(Connection conn) throws SQLException, DataAccessException {
String sql="insert into stu values(?,?,?)";
PreparedStatement pre=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//返回主键自动
pre.setString(1, stu.getSname());
pre.setString(2, stu.getSsex());
pre.setDate(3, new java.sql.Date(stu.getSbrith().getTime()));
pre.executeUpdate();
ResultSet rs=pre.getGeneratedKeys();
int m=0;
if(rs.next()){
m=rs.getInt(1);
}
return m;
}
});
return (Integer)obj;
}
}
我用的DBCP数据源,Connection工具类我就没写了
具体的实例说明:
public class StuDaoImple implements StuDaointer {
private JdbcTemplate jdbctemp = null;
public StuDaoImple() {
jdbctemp = new JdbcTemplate(SQLConnUtil.getDataSource());
}
// 所有添,删,改的方法都可以用jdbctemp.update();方法
public void addStu(Stu stu) {
String sql = "insert into stu values(?,?,?)";
Object[] obj = new Object[] { stu.getSname(), stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()) };
jdbctemp.update(sql, obj);// 可以传两个参数,第一个参数是SQL语句,第二个参数是SQL语句的参数值
}
public void delStu(int sid) {
String sql = "delete stu where s_id=" + sid;
jdbctemp.update(sql);// 可以传一个参数,就是没有参数的SQL语句
}
public void updStu(Stu stu) {
String sql = "update stu set s_name=?,s_sex=?,s_brith=? where s_id=?";
Object[] obj = new Object[] { stu.getSname(), stu.getSsex(),new java.sql.Date(stu.getSbrith().getTime()), stu.getSid() };
jdbctemp.update(sql, obj, new int[] { Types.VARCHAR, Types.VARCHAR,Types.DATE, Types.INTEGER });
// 可以传两个参数,第一个参数是SQL语句,第二个参数是SQL语句的参数值,第三个参数是SQL语句参数值的SQL类型
}
//查询1
public List getAllStu() {
String sql="select s_id,s_name,s_sex,s_brith from stu";
List list=jdbctemp.query(sql, new RowMapper(){
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
Stu stu=new Stu();
if(arg0!=null){
stu.setSid(arg0.getInt("s_id"));
stu.setSname(arg0.getString("s_name"));
stu.setSsex(arg0.getString("s_sex"));
stu.setSbrith(arg0.getDate("s_brith"));
}
return stu;
}
});
return list;
}
//查询2
public List getAllStu(int id) {
String sql="select s_id,s_name,s_sex,s_brith from stu where s_id<?";
Object[] obj=new Object[]{id};
//使用内部类
List list=jdbctemp.query(sql,obj,new RowMapper(){
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
Stu stu=new Stu();
if(arg0!=null){
stu.setSid(arg0.getInt("s_id"));
stu.setSname(arg0.getString("s_name"));
stu.setSsex(arg0.getString("s_sex"));
stu.setSbrith(arg0.getDate("s_brith"));
}
return stu;
}
});
return null;
}
//查询方式3(查询一个对象)
public Stu getOneStu(int id) {
String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?";
Object[] obj=new Object[]{id};
Object stu=jdbctemp.queryForObject(sql, obj,new BeanPropertyRowMapper(Stu.class));
//可以不用内部类,但是类的属性字段名称要数据库中的字段名称一样或者数据库字段名为s_id类的名称为SId,
//如果你没有遵守这个规范则可以在select语句后面给数据库字段名取别名
//上面的查询也可以这种方式
return (Stu)stu;
}
//查询方式4(查询一个字段)
public String getStuName(int sid) {
String sql="select s_name as sname from stu where s_id=?";
Object[] obj=new Object[]{sid};
Object stuname=jdbctemp.queryForObject(sql, obj, String.class);
//String.class即是指明一下结果的类型
return (String) stuname;
}
//查询方法5
public int count(){
String sql="select count(*) from stu";
int m=jdbctemp.queryForInt(sql);
return m;
}
//查询方法6 查询结果返回的是map,map中的key为select中的列名(若有别名是是别名)value是该列所对应的值
public Map getStuinMap(int sid){
String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?";
Object[] obj=new Object[]{sid};
return jdbctemp.queryForMap(sql, obj);
}
//查询方法7 若你不想用spring封装好了的操作,你可以自己写.Connection的打开和关闭它已经写好了,其它的操作自己可以去完成
public int getMyQuery(final Stu stu){
Object obj=jdbctemp.execute(new ConnectionCallback(){
public Object doInConnection(Connection conn) throws SQLException, DataAccessException {
String sql="insert into stu values(?,?,?)";
PreparedStatement pre=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//返回主键自动
pre.setString(1, stu.getSname());
pre.setString(2, stu.getSsex());
pre.setDate(3, new java.sql.Date(stu.getSbrith().getTime()));
pre.executeUpdate();
ResultSet rs=pre.getGeneratedKeys();
int m=0;
if(rs.next()){
m=rs.getInt(1);
}
return m;
}
});
return (Integer)obj;
}
}
评论
1 楼
chrislee1982
2010-05-16
这东西应该不是在所有情况下都能通用的!
如果在多表链接的时候,两个表的字段中都用id,或者name的列名。
映射的时候肯定就会乱掉。
最近写.net的东西的时候,就想到这样的问题。写了个通用的,需要在每个类中加上辅助的信息,以防止多表链接的时候这样列名冲突的情况
如果在多表链接的时候,两个表的字段中都用id,或者name的列名。
映射的时候肯定就会乱掉。
最近写.net的东西的时候,就想到这样的问题。写了个通用的,需要在每个类中加上辅助的信息,以防止多表链接的时候这样列名冲突的情况
发表评论
-
Spring--quartz中cronExpression配置说明
2011-12-02 18:28 0quartz中cronExpression配置说明 字段 ... -
使用Spring的jdbcTemplate进一步简化JDBC操作
2011-12-02 09:20 1268先看applicationContext.xml配置文件: ... -
Spring MVC:使用SimpleUrlHandlerMapping的一个简单例子
2011-12-01 11:26 969实现一个控制器ShirdrnCon ... -
最简单的Spring MVC入门示例
2010-05-19 14:29 1532应一位朋友的要求,写一个最简单的spring示例,使用s ... -
Spring源代码解析(十):Spring Acegi框架授权的实现
2010-03-18 12:48 1527我们从FilterSecurityIntercep ... -
Spring源代码解析(九):Spring Acegi框架鉴权的实现
2010-03-18 12:47 1512简单分析一下Spring Acegi的源代码实现: Ser ... -
Spring源代码解析(八):Spring驱动Hibernate的实现
2010-03-18 12:41 1454O/R工具出现之后,简化了许多复杂的信息持久化的开发。Spri ... -
Spring源代码解析(七):Spring AOP中对拦截器调用的实现
2010-03-18 12:40 1425前面我们分析了Spring AOP实现中得到Proxy对象的过 ... -
Spring源代码解析(六):Spring声明式事务处理
2010-03-18 12:37 1105我们看看Spring中的事务处理的代码,使用Spring管理事 ... -
Spring源代码解析(五):Spring AOP获取Proxy
2010-03-18 12:36 1327下面我们来看看Spring的AOP的一些相关代码是怎么得到Pr ... -
Spring源代码解析(四):Spring MVC
2010-03-18 12:35 7750下面我们对Spring MVC框架代码进行分析,对于web ... -
Spring源代码解析(三):Spring JDBC
2010-03-18 12:33 1702下面我们看看Spring JDBC相关的实现, 在Spri ... -
Spring源代码解析(二):IoC容器在Web容器中的启动
2010-03-18 12:32 1451上面我们分析了IOC容器本身的实现,下面我们看看在典型的web ... -
Spring源代码解析(一):IOC容器
2010-03-18 12:30 2677在Spring中,IOC容器的重要地位我们就不多说了,对于Sp ... -
使用Spring的SimpleJdbcTemplate完成DAO操作
2010-03-18 12:06 1513l SimpleJdbcTemplate内部包含了 ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作
2010-03-18 12:05 1435NamedParameterJdbcTemplate内部包含了 ... -
Spring in Action 学习笔记—第四章 征服数据库(转)
2010-03-18 12:03 1258Spring2.0正式版(http://www.springf ... -
Spring管理JDBC连接
2010-03-18 11:59 1696在Spring中,JdbcTemplate是经常被使用的类来帮 ... -
Spring JDBC数据库操作类
2010-03-18 09:26 16491.JdbcTemplate 在Spring中, ... -
Spring JdbcTemplate 批量插入或更新操作
2010-03-18 09:19 5288用 JdbcTemplate 进行批量插入或更新操作 ...
相关推荐
3. **结果集处理**:对于查询操作,JdbcTemplate可以将结果集映射到Java对象,这通常通过实现RowMapper接口或使用BeanPropertyRowMapper类来完成。RowMapper允许自定义对象映射逻辑,而BeanPropertyRowMapper则会...
`JdbcTemplate`是Spring JDBC提供的主要接口,它提供了一组模板方法,用于执行SQL查询、更新和存储过程。`SimpleJdbcInsert`和`SimpleJdbcCall`则分别用于简化插入操作和调用存储过程。 1. **JdbcTemplate使用**: ...
在Spring框架中,Spring JDBC通过一系列的抽象层,如JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate等,将数据库访问的繁琐细节隐藏起来,从而减少了代码量,提高了代码的可读性和可维护性。...
Spring框架的JdbcTemplate是Spring为Java开发者提供的一种方便、安全地...在压缩包文件"springtest"中,应该包含了实现这些功能的代码示例,通过学习和理解这些示例,你可以更好地掌握Spring MVC和JdbcTemplate的使用。
Spring JDBC是Spring框架的一个核心模块,它为Java开发者提供了便捷的方式来操作数据库。Spring JDBC通过抽象出数据库连接...在学习和使用Spring JDBC时,了解并掌握上述知识点,将有助于你更好地理解和运用这一技术。
JdbcTemplate是Spring对Java数据库连接(JDBC)的一种轻量级封装,它简化了数据访问代码,减少了可能出现的资源泄露,通过异常处理和事务管理提高了代码的健壮性。其设计目标是减少手写SQL和处理结果集的繁琐工作,...
`JdbcTemplate`是Spring JDBC中最核心的类之一,它提供了一系列的方法来执行各种数据库操作,包括查询、更新、插入和删除等。通过使用`JdbcTemplate`,开发者可以避免直接使用`PreparedStatement`和`ResultSet`,这...
为了解决这些问题,Spring框架提供了JDBCTemplate,它是一个基于JDBC的抽象层,能够使数据库操作变得更加简洁和安全。 JDBCTemplate的核心优势在于它封装了JDBC的常见任务,如事务管理、异常处理和结果集的处理,...
本文将深入探讨JDBC Template的源码,结合MySQL数据库,展示其在实际应用中的使用,并提及Spring框架中的`PropertyPlaceholderConfigurer`和`BeanPropertyRowMapper`组件。 首先,JDBC Template通过预编译SQL语句、...
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> ``` 2. **编写SQL语句**:JdbcTemplate支持静态和动态SQL。静态SQL通常直接写在代码中,而动态SQL可以通过PreparedStatement...
最后,`JdbcTemplate`与Spring的其他组件如`DataSource`和`TransactionManager`有很好的集成,可以无缝地与其他Spring框架特性一起工作,例如AOP(面向切面编程)和依赖注入。 总的来说,`JdbcTemplate`是一个强大...
Spring 4中的JdbcTemplate继承自JDBC抽象层,因此也支持事务管理和异常处理。当发生数据库操作异常时,JdbcTemplate会自动转换数据库异常为Spring的DataAccessException,使得开发者能够更方便地处理异常情况。 ###...
文件名`jdbcTemplate`、`jdbc`、`jdbcTemplateTest`和`jdbcTemplateSample`表明,这里可能包含了一个使用Spring JdbcTemplate的例子。JdbcTemplate是Spring提供的一个模板类,它封装了JDBC的基本操作,提供了更安全...
spring-jdbc-5.0.0.RELEASE.jar spring-tx-5.0.0.RELEASE.jar 查询一行的内容,封装为map用:template.queryForMap(sql) 查询所有的内容,封装为list用 :template.queryForList(sql) 查询所有的内容,封装为对象...
Java中的JdbcTemplate是Spring框架提供的一种用于简化JDBC(Java Database Connectivity)操作的工具,它在数据持久层操作中扮演着重要角色。JdbcTemplate通过消除大量重复的JDBC样板代码,提高了代码的可读性和可...
本项目"springboot-jdbc-多数据源"则主要展示了如何在Spring Boot应用中实现多数据源的配置和使用,这对于大型系统中需要连接多个数据库的场景非常实用。 首先,让我们深入了解Spring Boot与JdbcTemplate的结合。...
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.RowCallbackHandler; import org.spring...
本篇将深入探讨Spring JDBC的核心概念、使用方法以及与SQL和Java的交互。 首先,Spring JDBC通过`JdbcTemplate`和`NamedParameterJdbcTemplate`两个主要的模板类,大大简化了数据库访问。`JdbcTemplate`提供了基本...