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. [No0000135]程序员修炼之道 Tips

    这一篇文章其实就是记录程序员修炼之道中的所有 Tips, 我讲会在之后的每周实践两个 Tip, 并对这两个 Tips 进行补充和说明自己的体会, 最终成为书中所说的卓有成效的程序员. Tip 1: C ...

  2. 用CSS画基本图形

    用CSS画基本图形 1.正方形 代码如下: #square { width: 100px; height: 100px; background: red; } 2.长方形 代码如下:   #recta ...

  3. ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题

    题意:https://nanti.jisuanke.com/t/31450 题解:题目很长的模拟,有点uva的感觉 分成四步 part1 16进制转为二进制string 用bitset的to_stri ...

  4. 用homebrew 升级安装python3.7 之后系统的python版本还是旧的怎么办

    mac 中安装了多个版本的python$ brew install python3 Updating Homebrew... Warning: python is already installed, ...

  5. phpstorm之ssh链接远程Linux服务器

    save ssh session inPHPstorm. open PHPstorm,open File,> Settings >search for 'Deployment' > ...

  6. [linux] 对一个虚拟机的研究

    今天拿到了一个vmware的虚拟机硬盘镜像,是其他公司的演示产品. 启动之后是带着ubuntu字样的grub.进入系统之后也不是shell,而是一个定制的命令行.所以如果想了解细节的话,只能单独挂硬盘 ...

  7. Flink - FlinkKafkaConsumer010

    Properties properties = new Properties(); properties.setProperty("bootstrap.servers", &quo ...

  8. SQL Server的一些小问题

    一.SQL Server远程调用失败 解决办法:在控制面板-程序和功能中卸载“Microsoft SQL Server 2012 Express LocalDB”,具体版本根据你安装的VS版本决定,我 ...

  9. Es6 的类(class)

    首先根据es5的类(原型对象)的基本点做参照. 序号 基本点 es5 >es6 1 实例属性(方法) √ √ 2 原型属性(方法) 或 公共属性(方法) √ √ 3 es5的私有变量 或 私有属 ...

  10. json和jsonp的区别?

    json返回的是一串json格式数据:而jsonp返回的是脚本代码(包含一个函数调用): jsonp的全名叫做json with padding,就是把 json 对象用符合 js 语法的形式包裹起来 ...