1 演示JdbcTemplate模板对象

1 导包

2 准备数据库

3 书写UserDao

package www.test.dao;

import java.util.List;

import www.test.bean.User;

public interface UserDao {

    //重置表
public abstract void reset(String tableName); //增
public abstract void save(User u);
//删
public abstract void delete(Integer id);
//改
public abstract void update(User u);
//查
public abstract User getById(Integer id);
//查
public abstract Integer getTotalCount();
//查
public abstract List<User> getAll();
}

4 书写UserDaoImpl

package www.test.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import www.test.bean.User;
//使用JDBC模板实现增删改查
public class UserDaoImpl implements UserDao { private JdbcTemplate jt;
@Override
//增加用户
public void save(User u) {
String sql ="insert into t_user values (?,?)";
jt.update(sql, null,u.getName());
} @Override
//删除用户
public void delete(Integer id) {
String sql ="delete from t_user where id = ?";
jt.update(sql, id);
} @Override
//修改用户
public void update(User u) {
String sql ="UPDATE t_user SET NAME=? WHERE id=?";
jt.update(sql, u.getName(),u.getId());
} @Override
//根据id查找用户
public User getById(Integer id) {
String sql ="select * from t_user where id=?";
//queryForObject(sql, User.class)
//第二个参数接口
//第三个是动态参数
User user = jt.queryForObject(sql, new RowMapper<User>(){ @Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
return u;
} }, id);
return user;
} @Override
//获得用户的数量
public Integer getTotalCount() {
String sql = "select count(*) from t_user";
//queryForObject(sql, requiredType)
//requiredType需要的类型
Integer totalCount = jt.queryForObject(sql, Integer.class);
return totalCount;
} @Override
//获取用户列表
public List<User> getAll() {
String sql ="select * from t_user";
//jt.query(sql, rowMapper, args)
//rowMapper接口 args可变参数
List<User> userList = jt.query(sql, new RowMapper<User>(){ @Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
return u;
} });
return userList;
} public JdbcTemplate getJt() {
return jt;
} public void setJt(JdbcTemplate jt) {
this.jt = jt;
} @Override
//重置表 使用truncate
public void reset(String tableName) {
String sql="truncate table "+tableName+"";
jt.update(sql);
} }

5 配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ">
<!-- 1.将连接池放入spring容器 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Drive"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="initialPoolSize" value="5"></property>
<property name="maxPoolSize" value="20"></property>
</bean>
<!-- 2.将JDBCTemplate放入spring容器 -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 3.将UserDao放入spring容器 -->
<bean name="userDao" class="www.test.dao.UserDaoImpl">
<property name="jt" ref="jdbcTemplate"></property>
</bean>
</beans>

6 测试

package www.test.dao;

import java.util.List;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import www.test.bean.User; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo { @Resource(name="userDao")
private UserDao ud;
@Test
//测试删除表使用truncate uid会重置
/*
* 注意: delete 删除, uid 不会重置! 而使用 truncate 操作, uid 会重置。
* 因为它删除了表结构, 然后再创建一张一模一样的表, 所以再次插入数据的数据的时候从 1
* 开始。
*/
public void fun1(){
ud.reset("t_user");
} @Test
//测试添加用户
public void fun2(){
User u = new User();
u.setName("旺财");
ud.save(u);
} @Test
//测试删除用户
public void fun3(){
ud.delete(1);
} @Test
//测试修改用户
public void fun4(){
User user = new User();
user.setId(1);
user.setName("小强");
ud.update(user);
}
@Test
//根据id查找用户
public void fun5(){
User u = ud.getById(1);
System.out.println(u);
}
@Test
//测试获取用户数量
public void fun6(){
Integer totalCount = ud.getTotalCount();
System.out.println(totalCount);
}
@Test
//测试获取用户列表
public void fun7(){
List<User> all = ud.getAll();
System.out.println(all);
}
}

2 spring整合jdbc扩展-JdbcDaoSupport

1 UserDaoImpl代码修改

1 继承JdbcDaoSupport

2 去掉private JdbcTemplate jt属性

3 jt换成super.getJdbcTemplate()

package www.test.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; import www.test.bean.User;
//使用JDBC模板实现增删改查
public class UserDaoImpl extends JdbcDaoSupport implements UserDao { @Override
//增加用户
public void save(User u) {
String sql ="insert into t_user values (?,?)";
super.getJdbcTemplate().update(sql, null,u.getName());
} @Override
//删除用户
public void delete(Integer id) {
String sql ="delete from t_user where id = ?";
super.getJdbcTemplate().update(sql, id);
} @Override
//修改用户
public void update(User u) {
String sql ="UPDATE t_user SET NAME=? WHERE id=?";
super.getJdbcTemplate().update(sql, u.getName(),u.getId());
} @Override
//根据id查找用户
public User getById(Integer id) {
String sql ="select * from t_user where id=?";
//queryForObject(sql, User.class)
//第二个参数接口
//第三个是动态参数
User user = super.getJdbcTemplate().queryForObject(sql, new RowMapper<User>(){ @Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
return u;
} }, id);
return user;
} @Override
//获得用户的数量
public Integer getTotalCount() {
String sql = "select count(*) from t_user";
//queryForObject(sql, requiredType)
//requiredType需要的类型
Integer totalCount = super.getJdbcTemplate().queryForObject(sql, Integer.class);
return totalCount;
} @Override
//获取用户列表
public List<User> getAll() {
String sql ="select * from t_user";
//super.getJdbcTemplate().query(sql, rowMapper, args)
//rowMapper接口 args可变参数
List<User> userList = super.getJdbcTemplate().query(sql, new RowMapper<User>(){ @Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
User u = new User();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
return u;
} });
return userList;
}
@Override
//重置表 使用truncate
public void reset(String tableName) {
String sql="truncate table "+tableName+"";
super.getJdbcTemplate().update(sql);
}
}

2 applicationContext.xml配置修改

1 不在需要准备JdbcTemplate()

2 userDao中需要注入dataSource

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ">
<!-- 1.将连接池放入spring容器 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Drive"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="initialPoolSize" value="5"></property>
<property name="maxPoolSize" value="20"></property>
</bean>
<!-- 2.将JDBCTemplate放入spring容器 -->
<!-- <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> -->
<!-- 3.将UserDao放入spring容器 -->
<bean name="userDao" class="www.test.dao.UserDaoImpl">
<!-- <property name="jt" ref="jdbcTemplate"></property> -->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>

3 spring整合jdbc扩展-读取外部的properties配置

05-spring整合jdbc-jdbc模板对象JdbcTemplate的更多相关文章

  1. spring 整合freemarker 实现模板继承

    <!--freemarker 配置--> <bean id="freemarkerConfig" class="org.springframework. ...

  2. JAVAEE——spring03:spring整合JDBC和aop事务

    一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...

  3. spring框架总结(04)----介绍的是Spring中的JDBC模板

    1.1  Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...

  4. spring事务:事务控制方式,使用AOP控制事务,七种事务传播行为,声明事务,模板对象,模板对象原理分析

    知识点梳理 课堂讲义 1)事务回顾 1.1)什么是事务-视频01 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败. 1.2)事务的作用 事务特征(ACID) 原子 ...

  5. Rabbitmq与spring整合之重要组件介绍——AMQP声明式配置&RabbitTemplate组件

    上一节是使用rabbitAdmin的管理组件进行声明队列,交换器,绑定等操作,本节则是采用AMQP声明式配置来声明这些东西.AMQP声明主要是通过@Bean注解进行的. 配置: package com ...

  6. Spring整合JDBC(连接池、JDBC模板、Dao配置到Spring容器、配置文件的优化)

    1.Spring整合JDBC (1)导包(共12个): c3p0连接池.JDBC驱动(4个) Spring-jdbc.Spring-tx事务(2个) (2)JDBC模板对象(JDBCTemplate) ...

  7. Spring JDBC(一)jdbcTemplate

    前言 最近工作中经常使用Spring JDBC操作数据库,也断断续续的看了一些源码,便有了写一些总结的想法,希望在能帮助别人的同时,也加深一下自己对Spring JDBC的理解. Spring JDB ...

  8. Spring整合JDBC及事务处理

    1.Spring整合JDBC DAO是数据访问对象(data access object)的简写.接口是实现松耦合的关键,Spring也鼓励使用接口,但不是强制的. 捕获异常时希望能尝试从异常状态中恢 ...

  9. Spring整合JDBC以及AOP管理事务

    本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象 ...

随机推荐

  1. Ubuntu中安装LAMP

    现在,很多人可能已经用上ubuntu了,大家可能花了大量时间在ubuntu的美化上,这无可厚非,但是,ubuntu应该给我们的工作和学习带来更多的便利和方便.ubuntu作为linux,为我们提供了强 ...

  2. JS中setTimeout()的用法详解

    1. SetTimeOut() 1.1 SetTimeOut()语法例子 1.2 用SetTimeOut()执行Function 1.3 SetTimeOut()语法例子 1.4 设定条件使SetTi ...

  3. 数据加密实战之记住密码、自动登录和加密保存数据运用DES和MD5混合使用

    MD5的简介:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有 ...

  4. PCA(主成分分析)

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  5. linux配置环境变量 - 认识

    环境 ubuntu17.04 终端(就是黑框) 认识  环境变量:$PATH 在 ×××/bin 下的命令,可以不用到指定目录下, 比如:安装hbase后,hbase提供一些shell命令在habse ...

  6. 计算机上配置 IP地址,子网掩码,默认网关

    The Internet Assigned Numbers Authority (IANA) has reserved the following three blocks of the IP add ...

  7. window 使用频率最高的快捷键

    window  使用频率最高的快捷键 一个电脑使用者不完全一切操作都靠鼠标 适当的快捷键 不但可以提高效率 而且还可以适当的装一下自己是大神啦啦啦 个人最常用的快捷键: Ctrl + c : 复制 C ...

  8. Qt 学习之路 2(11):布局管理器

    Home / Qt 学习之路 2 / Qt 学习之路 2(11):布局管理器 Qt 学习之路 2(11):布局管理器  豆子  2012年9月4日  Qt 学习之路 2  70条评论 所谓 GUI 界 ...

  9. Unity 动画系统 StateMachineBehaviour 动画状态机

  10. sharepoint_study_6

    描述:SharePoint 2013配置开发环境,需要安装VS2012插件 解决: 参见地址-http://www.java123.net/detail/view-330510.html