day39-Spring 18-Spring的JDBC模板:查询的操作




package cn.itcast.spring3.demo2; 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 org.springframework.jdbc.core.support.JdbcDaoSupport; //public class UserDao {
public class UserDao extends JdbcDaoSupport{
/*在Dao层注入JDBC模板*/
/* private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}*/
public void add(User user){
String sql = "insert into user values(null,?)";
this.getJdbcTemplate().update(sql, user.getName());
}
public void update(User user){
String sql = "update user set name = ? where id = ?";
this.getJdbcTemplate().update(sql, user.getName(), user.getId());
}
public void delete(User user){
String sql = "delete from user where id = ?";
this.getJdbcTemplate().update(sql, user.getId());
} public int findCount(){
String sql = "select count(*) from user";
return this.getJdbcTemplate().queryForInt(sql); }
public String findNameById(int id){
String sql = "select name from user where id = ?";
return this.getJdbcTemplate().queryForObject(sql, String.class, id); }
public User findById(int id){
String sql = "select * from user where id = ?";
User user = (User) this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);//rowMapper和DBUtils的Handler一样.
//你需要自己去封装它.
//只不过DBUtils给你提供了几个实现类,像beanHandler,beanListHandler,MapHandler,MapList.但是Jdbc模板没有提供实现类,要自己手动去封装它.
return user; }
public List<User> findAll(){
String sql = "select * from user";
return this.getJdbcTemplate().query(sql, new UserRowMapper()); }
//内部类
class UserRowMapper implements RowMapper<User>{//泛型是User
/**
* rs:结果集.
* rowNum:行号
*/
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
// TODO Auto-generated method stub
//现在呢它不用你去遍历结果集了,它已经把结果集的光标移向了某一行的具体的数据了.
//你在mapRow()方法中不用自己去遍历结果集,这个mapRow()方法可以帮你遍历结果集.
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
return user;
} }
}
package cn.itcast.spring3.demo2;
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
package cn.itcast.spring3.demo2; import java.util.List; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest2 {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Test
public void demo1(){
//web层->业务层->Dao层
User user = new User();
user.setName("童童");
//user.setName("小编");
//user.setName("小胖");
userDao.add(user);
}
@Test
public void demo2(){
//web层->业务层->Dao层
User user = new User();
user.setId(1);
user.setName("小编");
userDao.update(user); }
@Test
public void demo3(){
//web层->业务层->Dao层
User user = new User();
user.setId(1);
userDao.delete(user); }
@Test
public void demo4(){
int count = userDao.findCount();
System.out.println(count);
}
@Test
public void demo5(){
//String name = userDao.findNameById(2);//得到2号客户的名称
String name = userDao.findNameById(3);//得到3号客户的名称
System.out.println(name);
}
@Test
public void demo6(){
//String name = userDao.findNameById(2);//得到2号客户的User对象.
//User user = userDao.findById(2);//得到2号客户的User对象.
User user = userDao.findById(3);//得到3号客户的User对象.
System.out.println(user);
}
@Test
public void demo7(){
//String name = userDao.findNameById(2);//得到2号客户的User对象.
//User user = userDao.findById(2);//得到2号客户的User对象.
List<User> list = userDao.findAll();
for (User user : list) {
System.out.println(user);
} }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入beans的头 -->
<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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置Spring默认的连接池 -->
<!-- 这个类由Spring来帮我们创建,它默认情况下只创建一次,因为是单例的. -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///spring3_day02"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property> </bean>
<!-- 配置DBCP连接池 -->
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///spring3_day02"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property> </bean>
<!--
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties">--><!-- jdbc.properties也是在src下 --><!-- </property>
</bean>
-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置C3P0连接池 -->
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
-->
<property name="driverClass" value="${jdbc.driver}"></property>
<!--
<property name="jdbcUrl" value="jdbc:mysql:///spring3_day02"></property>
-->
<property name="jdbcUrl" value="${jdbc.url}"></property>
<!--
<property name="user" value="root"></property>
-->
<property name="user" value="${jdbc.user}"></property>
<!--
<property name="password" value=""></property>
-->
<property name="password" value="${jdbc.password}"></property> </bean>
<!-- 定义jdbctemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource2"></property><!-- 把上面定义好的连接池注入进来了 -->
</bean>
<bean id="userDao" class="cn.itcast.spring3.demo2.UserDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean>
</beans>
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///spring3_day02
jdbc.user = root
jdbc.password =
day39-Spring 18-Spring的JDBC模板:查询的操作的更多相关文章
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 演示Spring框架的JDBC模板的简单操作
1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...
- Spring框架学习10——JDBC Template 实现数据库操作
为了简化持久化操作,Spring在JDBC API之上提供了JDBC Template组件. 1.添加依赖 添加Spring核心依赖,MySQL驱动 <!--Spring核心基础依赖--> ...
- Spring入门(三)— AOP注解、jdbc模板、事务
一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...
- Spring 框架的JDBC模板技术
1. 概述 Spring 框架提供了很多持久层的模板类来简化编程; Spring 框架提供的JDBC模板类: JdbcTemplate 类; Spring 框架提供的整合 Hibernate 框架的模 ...
- Spring框架的JDBC模板技术和事物
Spring框架的JDBC模板技术 技术分析之Spring框架的JDBC模板技术概述 1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 ...
- Spring 框架系列之 JDBC 整合实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...
- spring框架总结(04)----介绍的是Spring中的JDBC模板
1.1 Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...
- Spring的jdbc模板3:完成CURD操作
测试类代码如下 package zcc.spring_jdbc.demo2; import java.sql.ResultSet; import java.sql.SQLException; impo ...
- java框架之Spring(3)-JDBC模板使用&事务管理
下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...
随机推荐
- python图像翻转
准备跟着台湾的一个机器学习课程好好学学python,链接在这http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html 该课程开始有一个作业,叫做HW0 ...
- 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)[转]
Semaphore 是一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从而可能释放 ...
- hibernate4注解字段为mysql的text
文章的正文detail就需要设置为text 在getter方法上添加注解 @Lob @Basic(fetch = FetchType.LAZY) @Type(type = "text&quo ...
- codec engine工程中使用ccs下编译的lib库
原文地址:codec engine工程中使用ccs下编译的lib库--转作者:木子小白 这两天将dsp的算法程序放到ccs下,生成lib库文件 这样的好处就是: 1. 算法封装成lib库以后,看不到源 ...
- Jquery选择器总结二
简单选择器 1.:firstè选出匹配的元素中的第一个 2.:lastè选出匹配的元素中的最后一个 3.:eq(index)è选出匹配的元素中的指定索引位置的jquery对象(注:index从0开始) ...
- javascript基础:dom
Dom: * 概念:Document Object Model 文档对象模型 * 将标记语言文档的各个组成部分,封装成对象,可以使用这些对象,对标记语言文档进行CRUD的动态操作 * D ...
- Django项目:CRM(客户关系管理系统)--25--17PerfectCRM实现King_admin单列排序
登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html {#table_data_list.html#} {## ————————08PerfectCR ...
- js的Date()时间对象
var nowDate = new Date(); nowDate.getYear(); //获取当前年份(2位) nowDate.getFullYear(); //获取完整的年份(4位,1970-? ...
- JavaScript实现继承的方式和各自的优缺点
ECMAscript只支持实现继承,主要是依靠原型链来实现的. JavaScript实现继承的方式: 类式继承 构造函数继承 组合继承 寄生组合式继承 1.类式继承 //类式继承 //声明父类 fun ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]
适配器模式的主要意图是对现有类的接口进行转换,以满足目标类的需求.其次,可以给目标类的接口添加新的行为(主要指方法).这一点容易与装饰模式混淆.从意图方面来看,装饰模式不改变(通常指增加)接口中的行为 ...