spring和jdbctemplate
1.spring与jdbc整合应用
a。增删改
-获取connection
-获取statement
-设置sql中?参数
-执行sql操作
-释放connection
b。查询
-获取connection
-获取statement
-设置sql中?参数
-执行sql操作获取resultset结果
-将resultset结果封装成实体对象
-释放connection
1.spring提供了JdbcTemplate,编写DAO的工具类
a。jdbcTemplate.update("insert。。。。。",参数);
b。提供了aop事务管理(不需要再方法中追加事务提交和回滚)
c。提供了统一的异常处理DataAccessException
2.spring整合jdbc步骤
a。引入spring(ioc,aop,dao),数据库驱动,添加src/applicationContext.xml
b.编写实体类
c。编写DAO
d.在applicationContext.xml中扫描EmpDAO,注入JdbcTemplate对象
dbcp注入jdbctemplate,jdbctemplate注入empdao。
dbcp和jdbctemplate用的(xml的bean定义),empdao用的自动扫描。
例子:
spring.xml:
<!-- 开启自动扫描,扫描DAO -->
<context:component-scan base-package="org.alexhe"></context:component-scan>
<!-- 定义JdbcTemplate -->
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入连接信息 -->
<property name="dataSource" ref="dbcp"></property>
</bean>
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource">
<property name="username" value="root"></property>
<property name="password" value="19850319a"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/danei?useSSL=false&useUnicode=true&characterEncoding=utf8"></property>
</bean>
empdao.java:
@Repository//扫描Dao
public class EmpDao {
@Resource//注入
private JdbcTemplate template;//注入
public void save(Emp emp){
String sql="insert into emp(name,salary,age) values(?,?,?)";
Object[] params={emp.getName(),emp.getSalary(),emp.getAge()};
template.update(sql,params);
}
public void delete(int id){
String sql="delete from emp where id=?";
Object[] params={id};
template.update(sql,params);
}
public List<Emp> findAll(){
String sql="select * from emp";
EmpRowMapper rowMapper=new EmpRowMapper();
List<Emp> list=template.query(sql, rowMapper);
return list;
}
public Emp findById(int id){
String sql="select * from emp where id=?";
Object[] params={id};
EmpRowMapper rowMapper=new EmpRowMapper();
Emp emp=template.queryForObject(sql, params,rowMapper);
return emp;
}
}
Emp.java:
public class Emp implements Serializable{
private Integer id;
private String name;
private Double salary;
private Integer age;
省略get,set方法
EmpRowMapper.java:
/**将emp记录封装成Emp对象*/
public class EmpRowMapper implements RowMapper<Emp>{
@Override
public Emp mapRow(ResultSet rs, int index) throws SQLException {
// TODO Auto-generated method stub
Emp emp=new Emp();
emp.setId(rs.getInt("id"));
emp.setName(rs.getString("name"));
emp.setSalary(rs.getDouble("salary"));
emp.setAge(rs.getInt("age"));
return emp;
}
}
Test类:
public class TestEmpDao {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
EmpDao empDao=ac.getBean("empDao",EmpDao.class);
Emp emp=new Emp();
emp.setName("spring1");
emp.setAge(201);
emp.setSalary(100010.0);
List<Emp> list=empDao.findAll();
System.out.println(list);
}
}
spring和jdbctemplate的更多相关文章
- Spring利用JDBCTemplate实现批量插入和返回id
1.先介绍一下java.sql.Connection接口提供的三个在执行插入语句后可取的自动生成的主键的方法: //第一个是 PreparedStatement prepareStatement(St ...
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- spring使用jdbcTemplate和jdbcdaosupport和namedparameter
jdbcTemplate: 首先连接数据库 <!-- 导入外部文件 --> <context:property-placeholder location="classpat ...
- Spring之JDBCTemplate学习
一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回调 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core. ...
- spring+spring mvc+JdbcTemplate 入门小例子
大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒) https://www.cnblo ...
- spring 学习(四): spring 的 jdbcTemplate 操作
spring 学习(四): spring 的 jdbcTemplate 操作 spring 针对 javaee 的每一层,都提供了相应的解决技术,jdbcTemplate 的主要操作在 dao 层. ...
- Spring的jdbcTemplate 与原始jdbc 整合c3p0的DBUtils 及Hibernate 对比 Spring配置文件生成约束的菜单方法
以User为操作对象 package com.swift.jdbc; public class User { private Long user_id; private String user_cod ...
- spring学习(四)spring的jdbcTemplate(增删改查封装)
Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...
- Spring:JdbcTemplate使用指南
Spring:JdbcTemplate使用指南 Spring:JdbcTemplate使用指南 前言: 本文指在介绍Spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转 ...
- Spring中JdbcTemplate的基础用法
Spring中JdbcTemplate的基础用法 1.在DAO中使用JdbcTemplate 一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可. 在 ...
随机推荐
- 输出cglib以及jdk动态代理产生的class文件
--该设置用于输出jdk动态代理产生的类 System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles&q ...
- 这13个开源GIS软件,你了解几个?【转】
泰伯网有看点的空间地理信息资讯都在这,你还在等什么? 这些开源GIS软件,你了解几个?本文内容部分来源于一份罗列了关于GIS软件应用的文章,笔者将其编译整合. 地理信息系统(Geographic In ...
- 【ASP.NET Core】EF Core - “导航属性”
“导航属性”是实体框架用得算是比较频繁的概念. 首先,它是类型成员,其次,他是属性,这不是 F 话,而是明确它的本质.那么,什么场景下会用到导航属性呢?重点就落在“导航”一词上了,当实体 A 需要引用 ...
- PHP类中self和$this的区别
1.self代表类,$this代表对象2.能用$this的地方一定使用self,能用self的地方不一定能用$this静态的方法中不能使用$this,静态方法给类访问的. 今天在使用静态方法的时候,使 ...
- kuda 了解片
本来上个月想去了解一下kuda的,结果一直没有抽出时间去搞,现在大致先开个头,方便后面深入! Apache Kudu是开源Apache Hadoop生态系统的新成员,它完善了Hadoop的存储层,可以 ...
- matplotlib 与 seaborn 中出现中文乱码的解决方法
Linux.Mac osx 系统中,出现 matplotlib 或 seaborn 绘图中有中文乱码的情形,可以考虑使用以下方式处理: 到 anaconda 的 matplotlib 中查看是否有 ...
- 如何保证修改resolv.conf后重启不恢复?
如何保证修改resolv.conf后重启不恢复? 修改/etc/resolv.conf,重启网卡后,/etc/resolv.conf恢复到原来的状态. CentOS.redhat下面直接修改/etc/ ...
- Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat
Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 ...
- Python时间模块
1 time 模块: 读取系统时钟当前时间: 在 time 模块中,time.time()和 time.sleep()函数是最有用的模块. 1.1 time.time() time.time()函数返 ...
- [转]decorators.xml的用法
原文地址:https://blog.csdn.net/laozhuxiao/article/details/54342121 简介: sitemesh应用Decorator模式,用filter截取re ...