凡科免费建微信小程序网站,优质的响应式网站建设,微信api接口,做接口自动化是网站登录加密背景
在JDBC开发中#xff0c;充斥这大量重复的代码#xff0c;可能只是换了个SQL语句#xff0c;其他代码是完全不用变的。Spring的jar包里#xff0c;提供了一个叫JDBCTemplate的模板#xff0c;在保持操作灵活方便的情况下#xff0c;将代码量降到最低。 配置文件
首…背景
在JDBC开发中充斥这大量重复的代码可能只是换了个SQL语句其他代码是完全不用变的。Spring的jar包里提供了一个叫JDBCTemplate的模板在保持操作灵活方便的情况下将代码量降到最低。 配置文件
首先修改Spring的xml文件(src目录下)我这里采用的是c3p0数据源如下图所示
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd !-- 定义要扫描 controller的包 --context:component-scan base-packagecn.com.restapi.controller /context:component-scan base-packagecn.com.restapi.daoimpl/context:component-scan base-packagecn.com.restapi.serviceimpl/!-- 引用配置文件 --context:property-placeholder locationclasspath:jdbc.properties/mvc:default-servlet-handler / !-- 启动注解驱动 SpringMVC 功能 --mvc:annotation-driven /!-- 配置视图解析器解析路径 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolver idinternalResourceViewResolver!-- 定义视图存放路径 --property nameprefix value/WEB-INF/jsp/ /!-- 定义视图后缀 --property namesuffix value.jsp //bean!-- 1、声明数据源对象C3P0连接池 --bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSource!-- 加载jdbc驱动 --property namedriverClass value${driverClass}/property!-- jdbc连接地址 --property namejdbcUrl value${jdbcUrl}/property!-- 连接数据库的用户名 --property nameuser value${user}/property!-- 连接数据库的密码 --property namepassword value${password}/property!-- 数据库的初始化连接数 --property nameinitialPoolSize value3/property!-- 数据库的最大连接数 --property namemaxPoolSize value10/property!-- 数据库最多执行的事务 --property namemaxStatements value100/property!-- 连接数量不够时每次的增量 --property nameacquireIncrement value2/property /bean!-- 创建jdbcTemplate对象 --bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplateproperty namedataSource refdataSource/property/bean/beans
properties文件(src目录下)如下图内容如下图所示 然后写一个JDBCTemplate的类里面的方法用于对数据进行增删改查操作。这里的JdbcTemplate属性Spring容器会根据XML文件里的配置进行自动的注入。
package cn.com.restapi.daoimpl;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 cn.com.restapi.dao.EmployeeDao;
import cn.com.restapi.model.Employee;Repository
public class EmployeeDaoImpl implements EmployeeDao{Autowiredprivate JdbcTemplate jdbcTemplate;private Log log LogFactory.getLog(EmployeeDaoImpl.class.getName());Overridepublic ListEmployee getEmployees() {// TODO Auto-generated method stubString sql SELECT EMPLOYEE_ID,EMPLOYEE_NAME,AGE,ADDRESS,SEX FROM EMPLOYEE;log.info(sql);return jdbcTemplate.query(sql, new EmployeeRowMapper());}Overridepublic Employee getEmployeeByID(int id) {// TODO Auto-generated method stubString sql SELECT EMPLOYEE_ID,EMPLOYEE_NAME,AGE,ADDRESS,SEX FROM EMPLOYEE WHERE EMPLOYEE_ID ?;log.info(sql);ListEmployee employees this.jdbcTemplate.query(sql, new EmployeeRowMapper(),id);if (employees.isEmpty()) {return null;}return employees.get(0);}Overridepublic int createEmployee(Employee employee) {// TODO Auto-generated method stubString sql INSERT INTO EMPLOYEE(EMPLOYEE_ID,EMPLOYEE_NAME,AGE,ADDRESS,SEX) VALUE(?,?,?,?,?);log.info(sql);int rowNum this.jdbcTemplate.update(sql,employee.getEmployeeID(),employee.getEmployeeName(),employee.getAge(),employee.getAddress(),employee.getSex());return rowNum;}Overridepublic int updateEmployee(Employee employee) {// TODO Auto-generated method stubString sql UPDATE EMPLOYEE SET EMPLOYEE_NAME ?,AGE ?,ADDRESS ?,SEX ? WHERE EMPLOYEE_ID ?;log.info(sql);int rowNum this.jdbcTemplate.update(sql,employee.getEmployeeName(),employee.getAge(),employee.getAddress(),employee.getSex(),employee.getEmployeeID());return rowNum;}Overridepublic int deleteEmployee(Employee employee) {// TODO Auto-generated method stubString sql DELETE EMPLOYEE WHERE EMPLOYEE_ID ?;log.info(sql);int rowNum this.jdbcTemplate.update(sql,employee.getEmployeeID());return rowNum;}public class EmployeeRowMapper implements RowMapperEmployee{Overridepublic Employee mapRow(ResultSet rSet, int rowNum) throws SQLException {// TODO Auto-generated method stubEmployee employee new Employee();employee.setEmployeeID(rSet.getInt(EMPLOYEE_ID));employee.setEmployeeName(rSet.getString(EMPLOYEE_NAME));employee.setAddress(rSet.getString(ADDRESS));employee.setAge(rSet.getInt(AGE));employee.setSex(rSet.getString(SEX));return employee;}}Overridepublic boolean ifEmployeeExist(Employee employee) {// TODO Auto-generated method stubEmployee employee2 this.getEmployeeByID(employee.getEmployeeID());if (employee2 null) {return true;}return false;}} 只要对JdbcCompany进行依赖注入就可以调用使用了。以下是spring mvc rest服务中实现注入
RestController
public class CompanyController {Autowiredprivate JdbcCompany jdbcCompany;RequestMapping(value/company,method RequestMethod.GET)public ResponseEntityListCompany getAllCompany(){ListCompany companies new ArrayListCompany();companies jdbcCompany.queryAllCompany();if (companies.isEmpty()) {return new ResponseEntityListCompany(companies,HttpStatus.NO_CONTENT);}return new ResponseEntityListCompany(companies,HttpStatus.OK);}RequestMapping(value /company/{id},method RequestMethod.GET)public ResponseEntityListCompany getCompany(PathVariable(id) String id){ListCompany companies null;companies jdbcCompany.queryCompany(id);HttpStatus httpStatus companies ! null? HttpStatus.OK:HttpStatus.NOT_FOUND;return new ResponseEntityListCompany(companies,httpStatus);}
}