<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <context:component-scan base-package="com.icss.hr"></context:component-scan>
<!-- 1.配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/hr"/>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="user" value="root" />
<property name="password" value="admin" />
<property name="initialPoolSize" value="3" />
<property name="maxPoolSize" value="10" />
<property name="minPoolSize" value="1" />
<property name="acquireIncrement" value="3" />
<property name="maxIdleTime" value="60" />
</bean>
<!-- 2.JDBCTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- 3.配置事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txa" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="query*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* com.icss.hr.*.service.*.*(..))" id="txCut"/>
<aop:advisor advice-ref="txa" pointcut-ref="txCut"/>
</aop:config> <!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 跳转路径 字符串前面加上路径 --> <!-- view里面的字符串加上后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

Dept.java

package com.icss.hr.dept.pojo;
/**
* 部门类
* @author Administrator
*
*/
public class Dept {
private int dept_id;
private String dept_name;
private String dept_loc; public Dept() {
super();
}
public Dept(int dept_id, String dept_name, String dept_loc) {
super();
this.dept_id = dept_id;
this.dept_name = dept_name;
this.dept_loc = dept_loc;
}
public int getDept_id() {
return dept_id;
}
public void setDept_id(int dept_id) {
this.dept_id = dept_id;
}
public String getDept_name() {
return dept_name;
}
public void setDept_name(String dept_name) {
this.dept_name = dept_name;
}
public String getDept_loc() {
return dept_loc;
}
public void setDept_loc(String dept_loc) {
this.dept_loc = dept_loc;
}
@Override
public String toString() {
return "Dept [dept_id=" + dept_id + ", dept_name=" + dept_name + ", dept_loc=" + dept_loc + "]";
}
}

Dao.java

package com.icss.hr.dept.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.icss.hr.dept.pojo.Dept;
@Repository
public interface DeptDao {
public boolean addDept(Dept dept);
public boolean updateDept(Dept dept);
public boolean deleteDept(int dept_id); public List<Dept> queryAllDept();
public Dept queryDeptById(int dept_id); }

DaoImpl.java

package com.icss.hr.dept.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository; import com.icss.hr.dept.pojo.Dept;
@Repository
public class DeptDaoImpl implements DeptDao { @Autowired
private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
} public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} @Override
public boolean addDept(Dept dept) {
StringBuilder sql = new StringBuilder()
.append("INSERT INTO dept ")
.append("VALUES(?,?,?)");
System.out.println(sql);
int res = jdbcTemplate.update(sql.toString(),dept.getDept_id(),dept.getDept_name(),dept.getDept_loc());
return res > 0 ? true : false;
} @Override
public boolean updateDept(Dept dept) {
StringBuilder sql = new StringBuilder()
.append("update dept ")
.append("SET dept_name=?,dept_loc=? ")
.append("WHERE dept_id=?");
System.out.println(sql);
int res = jdbcTemplate.update(sql.toString(),dept.getDept_name(),dept.getDept_loc(),dept.getDept_id());
return res > 0 ? true : false;
} @Override
public boolean deleteDept(int dept_id) {
StringBuilder sql = new StringBuilder()
.append("DELETE FROM dept ")
.append("WHERE dept_id=?");
System.out.println(sql);
int res = jdbcTemplate.update(sql.toString(),dept_id);
return res > 0 ? true : false;
} @Override
public List<Dept> queryAllDept() {
StringBuilder sql = new StringBuilder()
.append("SELECT * ")
.append("FROM dept"); return jdbcTemplate.query(sql.toString(), new RowMapper<Dept>() { @Override
public Dept mapRow(ResultSet rs, int arg1) throws SQLException {
//解析行
Dept d = new Dept(rs.getInt("dept_id"),rs.getString(2),rs.getString(3));
return d;
}
}); } @Override
public Dept queryDeptById(int dept_id) {
// TODO Auto-generated method stub
return null;
} }

DeptService.java

package com.icss.hr.dept.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.icss.hr.dept.pojo.Dept;
@Service
public interface DeptService {
public boolean addDept(Dept dept);
public boolean updateDept(Dept dept);
public boolean deleteDept(int dept_id);
public List<Dept> queryDepts();
}

DeptServiceImpl.java

package com.icss.hr.dept.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import com.icss.hr.dept.dao.DeptDao;
import com.icss.hr.dept.pojo.Dept;
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
@Qualifier(value="deptDaoImpl")
private DeptDao deptDao; public DeptDao getDeptDao() {
return deptDao;
} public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
} @Override
public boolean addDept(Dept dept) {
//日志文件 return deptDao.addDept(dept);
} @Override
public boolean updateDept(Dept dept) {
// TODO Auto-generated method stub
return deptDao.updateDept(dept);
} @Override
public boolean deleteDept(int dept_id) {
// TODO Auto-generated method stub
return deptDao.deleteDept(dept_id);
} @Override
public List<Dept> queryDepts() {
// TODO Auto-generated method stub
return deptDao.queryAllDept();
} }

DeptAction.java

package com.icss.hr.dept.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import com.icss.hr.dept.pojo.Dept;
import com.icss.hr.dept.service.DeptService; @Controller
@RequestMapping("/dept")
public class DeptAction {
@Autowired
@Qualifier(value="deptServiceImpl")
private DeptService deptService; public DeptService getDeptService() {
return deptService;
}
public void setDeptService(DeptService deptService) {
this.deptService = deptService;
} @RequestMapping("/add.action")
public String addDept(Model mo,Dept dept){
boolean res = deptService.addDept(dept);
return res ? "redirect:/dept/show.action" : "../error";
}
@RequestMapping("/show.action")
public String showDept(Model mo){
List<Dept> depts = deptService.queryDepts();
mo.addAttribute("depts",depts);
return "../show";
}
@RequestMapping("/delete.action")
public String deleteDept(int dept_id){
boolean res = deptService.deleteDept(dept_id);
return res ? "redirect:/dept/show.action" : "../error";
}
@RequestMapping("/update.action")
public String updateDept(Dept dept){
System.out.println(dept.getDept_id());
boolean res = deptService.updateDept(dept);
System.out.println(res);
return res ? "redirect:/dept/show.action" : "../error";
}
}

TestDept.java

package com.icss.hr.dept.test;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.icss.hr.dept.pojo.Dept;
import com.icss.hr.dept.service.DeptService; public class TestDept {
@Test
public void test(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
DeptService service = (DeptService)ac.getBean("deptServiceImpl");
boolean b = service.updateDept(new Dept(7,"国防部","北京"));
System.out.println(b);
} }

  

  

  

Spring抽象JDBC,使用JdbcTemplate的更多相关文章

  1. Spring之JDBC模板jdbcTemplate

    要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.           第一种方式:我们可以在自己定义的DAO 实现类中注入一个Da ...

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

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

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

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

  4. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  5. Spring对 JDBC 的支持,JdbcTemplate类的使用

    导包:spring框架的包 和 连接数据库连接池的c3p0包 连接mysql数据库的包; 在src目录下建立jdbc.properties文件:存放连接数据库的属性值 jdbc.user=root j ...

  6. Spring 对JDBC的支持(JdbcTemplate)

    Spring对数据库的操作,使用JdbcTemplate对象 需要引入相关的jar文件 如版本:(Spring核心jar包就不列了) spring-jdbc-3.2.5.RELEASE.jar spr ...

  7. Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate(转)

    今天看了下Spring的源码——关于JDBC的"薄"封装,Spring 用一个Spring JDBC模板类来封装了繁琐的JDBC操作.下面仔细讲解一下Spring JDBC框架. ...

  8. 【Spring JDBC】JdbcTemplate(三)

    传统Jdbc API与Spring jdbcTemplate比较 //JDBC API Statement statement = conn.createStatement(); ResultSet ...

  9. Spring对Jdbc的封装——JdbcTemplate的使用

    链接:https://pan.baidu.com/s/15luDElW4oeEaP0nvEQ_40w 提取码:i2r1 JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于 ...

随机推荐

  1. 洛谷P1710地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  2. [bzoj2561]最小生成树_网络流_最小割_最小生成树

    最小生成树 bzoj-2561 题目大意:题目链接. 注释:略. 想法: 我们发现: 如果一条权值为$L$的边想加入到最小生成树上的话,需要满足一下条件. 就是求出原图的最小生成树之后,这个边当做非树 ...

  3. 深入理解hadoop(三)

    Hadoop多用户作业调度器 hadoop 最初是为批处理作业设计的,当时只采用了一个简单的FIFO调度机制分配任务,随着hadoop的普及以及应用的用户越来越多,基于FIFO的单用户调度机制不能很好 ...

  4. SPOJ SUMPRO(数学)

    题意: 给出一个数N,问所有满足n/x=y(此处为整除)的所有x*y的总和是多少.对答案mod(1e9+7). 1 <= T <= 500. 1 <= N <= 1e9. 分析 ...

  5. 大话设计模式C++实现-第8章-工厂方法模式

    一.UML图 二.概念 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类. 三.包括的角色 (1)抽象工厂 (2 ...

  6. 搭建wamp php环境

    点击下载wamp,wamp是一个集成环境,在安装过程中,我们要选择默认的浏览器以及默认的文本编辑器,安装步骤如下: 第一步,选择默认的浏览器(填写默认的浏览器可执行路径就行) 第二步,选择默认的文本编 ...

  7. UVa10048_Audiophobia(最短路/floyd)(小白书图论专题)

    解题报告 题意: 求全部路中最大分贝最小的路. 思路: 类似floyd算法的思想.u->v能够有另外一点k.通过u->k->v来走,拿u->k和k->v的最大值和u-&g ...

  8. Microsoft Windows CE 5.0 Board Support Package, Boot Loader, and Kernel Startup Sequence

    Summary Learn about the initial, low-level startup sequence and the hardware platform functions that ...

  9. 在.Net MVC结构API接口中推断http头信息实现公共的权限验证过滤器演示样例

    //control   action public class TestController : ApiController { [MyAuthFilter] public string test(s ...

  10. libsqlite3.dylib与libsqlite3.0.dylib的差别

    在我们加入数据库框架时,在搜索框中输入sqlitekeyword,以下列表区会显示libsqlite3.dylib,libsqlite3.0.dylib. 此时我们选择libsqlite3.0.dyl ...