spring jdbc

DBCP 基于jdbc,操作数据库速度比较快,优于hibernate但是功能没hibernate强大
,增删改可以用,查询用起来比较麻烦

DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由

Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池

项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-

dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以

通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时

直接到连接池中申请一个就行,用完后再放回去。

使用,首先jar包支持
commons-pool.jar
commons-dbcp.jar
mysql-connector-java-5.1.12-bin.jar
在之前的基础上加上spring-tx-4.2.0.RELEASE 这个包
基础jar包

这里要使用dbcp的话我们首先需要做的是配置spring的dataSource 同样的这也是我们

以后要使用数据库主要的核心
<bean id="dataSource" destroy-method="close"

class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"

value="com.mysql.jdbc.Driver" />
<property name="url"

value="jdbc:mysql://localhost:3306/emp" />
<property name="username" value="root" />
<property name="password" value="admin"/>
<property name="maxActive" value="10"></property>
<property name="initialSize" value="2"></property>
<property name="minIdle" value="2"></property>
<property name="maxIdle" value="3"></property>
</bean>
解释:
<property name="maxActive" value="10"></property> 连接池中

最多10个链接
<property name="initialSize" value="2"></property> 池子创

建好后一开始就有2个链接
<property name="minIdle" value="2"></property> 最小空娴熟
<property name="maxIdle" value="3"></property>最大空闲数

-----------------------------------------------------

配置好了之后我们就可以正常使用了,在类中要使用我们首先要见过这个dbcp注入到类

中去
完成注入:
<bean name="userDaoImpl" class="com.spring.dbcp.UserDaoImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>

然后需要让你的类继承JdbcDaoSupport这个类就可以了(最简单的方式)
public class UserDaoImpl extends JdbcDaoSupport

最后this.getJdbcTemplate()--获得jdbc模板就可以了
---------------------------------------

不过这里很麻烦,因为要继承类,我们有一种不需要继承的写法
<bean id="jdbcTemplate"

class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>

然后在我们的类中
@Resource
private JdbcTemplate template;
这样就能获得了
案例:
演示增删改的操作

注意这个我们用的这个函数函数的有两个常用的参数update(sql,new Object[]

{})----注意第一个参数是sql语句,如果有参数用占位符,第二个参数为设置占位符

参数的位置

那我们的查询呢?
除了这个方法我们还有
queryForObject(sql,new UserMapper());---查处一个对象放在一个OBJECT中
queryForList(sql)---返回list数组对象

query(sql,rowMappwe)--查询结果集

queryForInt(sql);--查询聚合函数 count avg max min

---注意我们也可以是用匿名类简化一下
-------------------------------------
public List<User> getAllUser(){
String sql="select * from users";
List<User> list=jdbcTemplate.query(sql,new RowMapper(){

@Override
public Object mapRow(ResultSet arg0, int arg1)

throws SQLException {
User u=new User();
if(arg0!=null){
u.setUserId(arg0.getInt("user_id"));
u.setUserName(arg0.getString

("user_name"));
u.setUserPwd(arg0.getString("user_pwd"));
u.setUserId(arg0.getInt("user_type"));
}
return u;
}

});
return list;
}
----------------------------------
----------------------------------
多表
public List<User> getAllUserAndInfo(){
String sql="select

u.user_name,u.user_type,i.info_nickName,i.info_email from users u left

join userInfo i on u.user_id=i.user_id ";
List<User> list=jdbcTemplate.query(sql,new RowMapper(){

@Override
public Object mapRow(ResultSet arg0, int arg1)

throws SQLException {
User u=new User();
if(arg0!=null){
u.setUserName(arg0.getString

("user_name"));
u.setUserType(arg0.getInt("user_type"));
UserInfo info=new UserInfo();
info.setInfoEmail(arg0.getString

("info_email"));
info.setInfoNickName(arg0.getString

("info_nickName"));
u.setInfo(info);
}
return u;
}

});
return list;
}
----------------------------------

注意这里Spring2.5开始新增了一个类BeanPropertyRowMapper

我们可以这么玩
public List<User> findAll() {
String sql="select * from d_user";
return (List<User>) this.getJdbcTemplate().query(sql,new

BeanPropertyRowMapper(User.class));---这里
}

我们就不用那么麻烦的去做一对mapper了

注意命名规则user_id---userId

想一想它的好处坏处都有啥

<context:property-placeholder location="classpath:db.properties"/>
配置jdbc的 properties 文件时。把这一句加在配jdbc上面,用el表达式从中取值
properties 文件

jdbc.user=root
jdbc.password=796969
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/forestpro?

useUnicode=true&amp;characterEncoding=utf8
------------------------------------------------
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" destroy-method="close"

class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"

value="${jdbc.driverClass}"></property>
<property name="url" value="${jdbc.jdbcUrl}"></property>
<property name="username" value="${jdbc.user}"></property>
<property name="password"

value="${jdbc.password}"></property>
<property name="maxActive" value="10"></property>
<property name="initialSize" value="2"></property>
<property name="minIdle" value="2"></property>
<property name="maxIdle" value="3"></property>
</bean>
<bean id="jdbcTemplate"

class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>

时间: 2024-10-26 02:28:02

spring jdbc的相关文章

一个spring jdbc实例

一.使用示例 (1)springJdbcContext.xml Java代码   <?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

Spring JDBC 框架中, 绑定 SQL 参数的另一种选择:具名参数(named parameter)

使用spring的jdbcTemplate-----使用具名参数 在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限制,定位参数的问题在于,一旦参数的位置发生变化,必须改变参数的绑定,在Spring JDBC中,绑定SQL参数的另一种选择是使用具名参数,SQL具名参数是按照名称绑定,而不是位置绑定. 什么是具名参数? 具名参数: SQL 按名称(以冒号开头)而不是按位置进行指定. 具名参数更易于维护, 也提升了可读性. 具名参数由框架类在运行时用占位符取代 具名参数只在 NamedP

Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理

Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架,让spring来帮我们处理异常. (1)使用简单异常处理器 step1. 配置简单异常处理器. step2. 添加对应的异常处理页面. 注:该方式只适合处理简单异常的处理,如果要对异常做复杂处理,比如 记录日志等,则不合适了. (2)使用@ExceptionHandler注解 step1. 在处理

Spring JDBC详解

<Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJdbcInsert类,SimpleJdbcCall类,以及NamedP

Spring JDBC入门

Spring将替我们完成所有使用JDBC API进行开发的单调乏味的.底层细节处理工作. 操作JDBC时Spring可以帮我们做这些事情: 定义数据库连接参数,打开数据库连接,处理异常,关闭数据库连接 我们仅需要关注: 声明SQL语句,处理每一次得到的结果 一个较为简单的例子与讲解 JdbcTemplate类 JdbcTemplate是core包的核心类.它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC的使用.它还可以帮助我们避免一些常见的错误,比如忘记关闭数据库连接.JdbcTe

Spring JDBC实现查询

1 db.properties 1 jdbc.user=root 2 jdbc.password=920614 3 jdbc.driverClass=com.mysql.jdbc.Driver 4 jdbc.jdbcUrl=jdbc:mysql:///spring?useUnicode=true&characterEncoding=utf-8 5 6 jdbc.initPoolSize=5 7 jdbc.maxPoolSize=10 2 applicationContext.xml 1 <?

Spring DAO vs Spring ORM vs Spring JDBC

Pat 的疑惑 最近关注于 Spring 提供的数据访问技术,对于 Spring 相关的这几个项目有何不同我不是太明白: Spring-DAO (http://docs.spring.io/spring/docs/2.0.8/reference/dao.html) Spring-ORM (http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html) Spring-JDBC (http://doc

Spring JDBC 访问数据库

Spring JDBC是Spring所提供的持久层技术,它以一种更直接.更简单的方式使用JDBC API.在Spring JDBC里,用户仅需要做那些必不可杀的事儿,而将资源获取.Statement创建.异常处理.资源释放等繁杂的工作交给Spring. 虽然ORM的框架已经很成熟,但是JDBC灵活直接的特性依旧让它有自己的用武之地. 本节的主要内容:使用JdbcTemplate模板类进行CRUD数据操作.BLOB和CLOB类型数据的操作,支持命名参数绑定NamedParameterJdbcTem

Leopard Jdbc:简化Spring Jdbc使用

Leopard Jdbc:简化Spring Jdbc使用 学习如何在旧项目中使用Leopard Jdbc. 本指南将引导您完成使用Leopard Jdbc操作MySQL. How to complete this guide 你可以从头开始并完成每一个步骤,或者您可以绕过你已经熟悉的基本设置步骤.无论哪种方式,你最终都可以得到可工作的代码. 1.配置maven依赖 在dao模块的pom.xml加入 <dependencies> [...] <dependency> <grou

Spring Jdbc 自定义 ORM——sql查询对应Java数据对象

Target:  实现如下,通过Spring Jdbc,传入sql,查询满足条件的Java数据对象: pojo: public class ZmTest { public ZmTest() { // TODO Auto-generated constructor stub } private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) {