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. Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378 Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378 Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378 Error:..\FreeRTOS\tasks.c,2806

    Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378 ...

  2. [No0000158]思维模型1-20

    [No0000158]思维模型1-20.7z 思维模型No1|第一性原理 第一原理(又叫第一性原理)是个今年很火的概念,最早由亚里士多德提出,它相当于数学中的公理,即在每一个系统的探索中,存在第一原理 ...

  3. 约数,gcd,exgcd.

    很多题都是要求出什么最大公约数或者最小公倍数什么的,也有一些题目是和约数个数有关的,所以需要总结一下. 首先最大公约数和最小公倍数怎么求呢? 当然是观察法了,对于一些很聪明的孩纸他们一般随便一看就秒出 ...

  4. 关于字符串的简单dp

    看这道题题目叫做魔族密码多新奇的名字点开是道字符串的dp,思考然后想出lis其实但字符串之间的比对只有循环然后其实循环爆不了,太懒点开了题解发现有人使用stl——cstring的函数了方便多了,借鉴一 ...

  5. Mysql undo redo 总结

  6. AndroidStudio_RecyclerView

    在这里回顾一下RecyclerView的用法 RecyclerView的用法与Button的用法很类似,只是要增加一个Adapter.java文件和item.xml文件 具体用法: 1.在page1. ...

  7. 转:关于将Java编译过的.class文件打成jar可执行文件/JAR详解

    原文链接:关于将Java编译过的.class文件打成jar可执行文件/JAR详解 如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. ...

  8. Java+selenium 如何定位下拉框select

    场景:需要进行下拉选择定位元素.   一.select菜单       select也是比较常见的,selenium封装了以下方法, 创建select WebElement selector = dr ...

  9. Python内置模块:random,os,sys,和加密模块hashlib

    random import random    # 导入模块 随机数 import random # 内置的 print(random.random()) #0-1 之间随机小数(18位有效数字) p ...

  10. zabbix server源码安装

    一.准备工作 yum -y install net-snmp-devel php-bcmath php-ctype php-xml php-xmlreader php-xmlwriter php-se ...