您的位置:首页 > 编程语言 > Java开发

Spring入门第3天--JDBC Template开发入门

2016-06-23 21:41 363 查看
文档版本开发工具测试平台工程名字日期作者备注
V1.02016.06.23lutianfeinone

Spring JdbcTemplate

JdbcTemplate模板与DbUtils工具类比较类似

Spring对持久层技术支持

JDBC : org.springframework.jdbc.core.JdbcTemplate

Hibernate3.0 : org.springframework.orm.hibernate3.HibernateTemplate

MyBatis : org.springframework.orm.ibatis.SqlMapClientTemplate

JPA : org.springframework.orm.jpa.JpaTemplate

开发JDBCTemplate入门

第一步:引入相应jar包:

spring-tx-3.2.0.RELEASE.jar

spring-jdbc-3.2.0.RELEASE.jar

mysql驱动.

第二步:创建applicationContext.xml

第三步:编写一个测试类

@Autowired
@Qualifier("jdbcTemplate")
private JdbcTemplate jdbcTemplate;

@Test
public void demo2(){
jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
}


配置连接池

在实际开发中,通过Spring配置文件来配置JdbcTemplate

常用数据源

Spring 数据源实现类 DriverManagerDataSource

DBCP 数据源 BasicDataSource

C3P0 数据源 ComboPooledDataSource

Spring默认的连接池

<!-- 配置Spring默认的连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///spring3_day02"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>


DBCP连接池

导入jar包:

com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar

com.springsource.org.apache.commons.pool-1.5.3.jar

<!-- 配置DBCP连接池 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///spring3_day02"/>
<property name="username" value="root"/>
<property name="password" value="123"/>

</bean>




C3P0连接池

导入jar包:

com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///spring3_day02"/>
<property name="user" value="root"/>
<property name="password" value="123"/>
</bean>




使用properties文件配置数据库连接基本参数

在src下创建jdbc.properties

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///spring3_day02
jdbc.user = root
jdbc.password = 123


在applicationContext.xml 中使用属性文件配置的内容

第一种写法:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>


第二种写法: 先引入Context标签头

<context:property-placeholder location="classpath:jdbc.properties"/>




JdbcTemplate的CRUD的操作

为了方便DAO中注入JdbcTemplate,Spring为每一个持久化技术都提供了支持类

JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport

Hibernate 3.0 : org.springframework.orm.hibernate3.support.HibernateDaoSupport

MyBatis : org.springframework.orm.ibatis.support.SqlMapClientDaoSupport

基本增删改操作

插入操作

String sql = “insert into customers values(null,?)”;

jdbcTemplate.update(sql, “小丽”);

修改操作

String sql = “update customers set name= ? where id =?”;

jdbcTemplate.update(sql, “小明”, 1);

删除操作

String sql = “delete from customers where id =?”;

jdbcTemplate.update(sql, 1);

查询操作

简单查询:

例一 : queryForInt 查询int类型

String sql = “select count(*) from customers”;

int count = jdbcTemplate.queryForInt(sql);

例二 : queryForObject 查询对象类型

String sql = “select name from customers where id = ?”;

String name = jdbcTemplate.queryForObject(sql, String.class, 2);

这里String.class是返回类型 , 2是customer的id参数

复杂查询:(返回对象,和对象集合)

查询单个对象 :
queryForObjectString sql,RowMapper<T> rowMapper,Object... args);




查询多个对象的集合:
query(String sql,RowMapper<T> rowMapper,Object... args);




eg:使用匿名内部类来处理的方式:

public User findById(int id){
String sql = "select * from user where id = ?";
User user = this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);
return user;
}

public List<User> findAll(){
String sql = "select * from user";
return this.getJdbcTemplate().query(sql, new UserRowMapper());
}

class UserRowMapper implements RowMapper<User>{
/**
* rs:结果集.
* rowNum:行号
*/
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
return user;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: