spring.xml

    <!-- 加载属性配置文件 -->
<util:properties id="db" location="classpath:db.properties" /> <!-- 定义数据源 -->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="#{db.driver}"></property>
<property name="url" value="#{db.url}"></property>
<property name="username" value="#{db.user}"></property>
<property name="password" value="#{db.pwd}"></property>
</bean> <!-- 定义jdbcTemplate -->
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean> <!-- 开启注解扫描 -->
<context:component-scan base-package="com.xms"></context:component-scan>

empDao.java

package com.xms.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository; import com.xms.entity.Emp; @Repository
public class EmpDao {
@Resource
private JdbcTemplate template; //查询全部员工
public List<Emp> findAll(){
String sql="select*from emp"; return template.query(sql, new EmpRowMapper());
} class EmpRowMapper implements RowMapper<Emp>{
//将结果集中的记录映射成实体对象
public Emp mapRow(ResultSet rs, int index) throws SQLException {
//index代表结果集中记录的下标,从0开始
System.out.println(index); Emp emp=new Emp();
emp.setEmpno(rs.getInt("empno"));
emp.setEname(rs.getString("ename"));
emp.setSalary(rs.getDouble("salary"));
emp.setBonus(rs.getDouble("bonus"));
emp.setHiredate(rs.getDate("hiredate"));
emp.setDeptno(rs.getInt("deptno")); return emp;
} } //根据员工号查询员工
public Emp findByEmpno(int empno){
String sql="select*from emp where empno=?";
return template.queryForObject(sql, new Object[]{empno}, new EmpRowMapper());
} //添加员工
public void save(Emp emp){
String sql="insert into emp values(?,?,?,?,?,?)";
Object[] parameters={
emp.getEmpno(),emp.getEname(),emp.getSalary(),emp.getBonus(),emp.getHiredate(),emp.getDeptno()
};
template.update(sql, parameters);
} //修改员工
public void update(Emp emp){
String sql="update emp set ename=?,salary=?,bonus=?,hiredate=?,deptno=? where empno=?";
Object[] parameters={
emp.getEname(),emp.getSalary(),emp.getBonus(),emp.getHiredate(),emp.getDeptno(),emp.getEmpno()
};
template.update(sql,parameters); } //删除员工
public void delete(int empno){
String sql="delete from emp where empno=?";
template.update(sql,empno);
}
}

TestCase.java

package com.xms.test;

import java.sql.Date;
import java.util.List; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.xms.dao.EmpDao;
import com.xms.entity.Emp; public class TestCase { ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
EmpDao empDao=ac.getBean("empDao",EmpDao.class); @Test
public void testOne(){
List<Emp> emps=empDao.findAll();
for(Emp emp:emps){
System.out.println(emp.getEname()+":" + emp.getSalary());
}
} @Test
public void testTwo(){
Emp emp=empDao.findByEmpno(1002);
System.out.println(emp.getEname()+":"+emp.getSalary());
} @Test
public void testThree(){
Emp emp=new Emp();
emp.setEname("张三丰");
emp.setSalary(99999.99);
emp.setBonus(999.99);
emp.setHiredate(new Date(System.currentTimeMillis()));
emp.setDeptno(1);
empDao.save(emp);
} @Test
public void testFour(){
Emp emp=empDao.findByEmpno(1005);
emp.setEname("孙悟空");
emp.setSalary(88888.88);
emp.setBonus(888.88); empDao.update(emp);
} @Test
public void testFive(){
empDao.delete(1006);
}
}

System.currentTimeMillis()获取的是当前的系统时间,不是网络时间。

Emp.java实体类

package com.xms.entity;

import java.sql.Date;

public class Emp {

    private Integer empno;
private String ename;
private Double salary;
private Double bonus;
private Date hiredate;
private Integer deptno;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Double getBonus() {
return bonus;
}
public void setBonus(Double bonus) {
this.bonus = bonus;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
} }

出现syntax异常,说明,SQL语法写错了,或者JdbcTemplate对象参数没写对

spring 对jdbc的简化的更多相关文章

  1. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. Spring的JDBC框架

    转自: http://www.cnblogs.com/windlaughing/p/3287750.html Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要 ...

  3. 【Spring】Spring系列4之Spring支持JDBC

    4.Spring支持JDBC 4.1.使用JdbcTemplate简化JDBC开发 也可以这么用(不推荐): 4.2.使用NamedParameterJdbcTemplate

  4. Spring对jdbc的支持

    Spring对jdbc技术提供了很好的支持. 体现在: 1)Spring对c3p连接池的支持很完善: 2)Spring对jdbc提供了JdbcTemplate,来简化jdbc操作: 1.使用步骤 1) ...

  5. Spring实战6:利用Spring和JDBC访问数据库

    主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...

  6. Spring对jdbc支持

    4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...

  7. Spring的jdbc模板1

    Spring是EE开发的一站式框架,有EE开发的每一层解决方案.Spring对持久层也提供了解决方案:ORM模块和jdbc模块,ORM模块在整合其他框架的时候使用 Spring提供了很多的模板用于简化 ...

  8. Java学习笔记43(Spring的jdbc模板)

    在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...

  9. 【spring基础】spring与jdbc整合详解

    先上一段简单示例 public class MyTemplate { private DataSource dataSource; public DataSource getDataSource() ...

随机推荐

  1. MFC实现一元稀疏多项式运算器

    MFC实现一元稀疏多项式运算器 基本要求 输入并建立两个多项式 多项式a与b相加,建立和多项式c 多项式a与b相减,建立差多项式d 输出多项式a, b, c, d.输出格式:比如多项式a为:A(x)= ...

  2. 利用win10自带的虚拟机Hyper-V安装Centos7的步骤教程

    1.设置开启Hyper-V应用程序? 在搜索功能里输入 Hyper-V 然后点击选中的部分 2.全部选中框中的部分,然后重新启动电脑 3.在搜索功能里输入Hyper-V 打开 4.点击新建--> ...

  3. iOS调用第三方导航和线路规划

    线路规划: https://blog.csdn.net/qq_19979539/article/details/51938995 百度地图:baidumap: 高德地图:iosamap: 腾讯地图:q ...

  4. Mysql thread 与 OS thread

    测试环境信息如下: OS:Ubuntu 16.04 LTS Mysql:Mysql 5.7.18,使用docker images运行的实例 Mysql如何处理client请求 在Mysql中,连接管理 ...

  5. JQuery中数组的创建与使用

    一.创建数组的方式: 1.定义并赋值 var str = ['java', 'php', 'c++', 'c#', 'perl', 'vb', 'html', 'css']; 2.用{}定义后赋值: ...

  6. c#加"\n\r"不换行,变成字符串

    质检模块,本想将每个错误分行, 比如:lyrerrormess += lyrname + "图层" + "缺少" + xmlFieldName + " ...

  7. IndentationError: expected an indented block 在继承中出现的问题:未完

    1. class Foo(object): def __init__(self,name,price,period): self.name=name self.price=price self.per ...

  8. [knownledge][latex] LaTex入门

    序言 最近需要写一份文档, 时间也不是特别紧. 之前一直用markdown写文档. 始终想学一下LaTex, 毕竟是学术论文界的工具. 在提及LaTex的内容之前. 事必是一定要首先提及高德纳的. 他 ...

  9. 为单实例数据库配置ASM

    环境配置沿用搭建RAC的环境配置 配置ASM可以在数据库软件安装之前进行,也可以在安装完数据库软件配置数据库前进行 [root@rac01 Packages]# cd /etc/yum.repos.d ...

  10. js转换Date日期格式

    有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的, Date()返回格式: Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间) 而我 ...