spring整合JDBC

文章目录

    • spring提供了很多模板整合Dao技术
    • spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术.
    • 如何用Spring中的jdbc模板对数据库操作:
    • spring配置
    • 进阶内容
    • JDBCDaoSupport的使用

spring提供了很多模板整合Dao技术

因为在jdbc、Hibernate、Mybatis中都有对数据库封装好方法,但是不同的框架中方法名称都不相同,为了方便开发者调用和整理代码,Spring中提供了很多模板来整合Dao技术
这里写图片描述

spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术.

JDBCTemplate => JDBC模板对象

其实Spring的JDBCTemplate有点像DBUtils与DBUtils中的QueryRunner非常相似.,但是有时候还没有DBUitls好用。

代码模板:

		ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass("com.mysql.jdbc.Driver");//jdbc:mysql:///jdbcTest表示默认加载本地localhost  dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/jdbcTest");dataSource.setUser("root");dataSource.setPassword("1234");JdbcTemplate template = new JdbcTemplate();template.setDataSource(dataSource);String mysql="insert into userdemo values('alan',18,null) ";template.update(mysql);

如何用Spring中的jdbc模板对数据库操作:

  1. 导包:4+2+ :spring-test 、spring-aop 、 junit4类库 、 c3p0连接池 、JDBC驱动 、spring-jdbc 、 spring-tx事务
    这里写图片描述
  2. 准备数据库
    这里写图片描述
    3.书写Dao

增删改:
这里写图片描述
查询单个对象
这里写图片描述
查询值类型
这里写图片描述
查询List集合类型
这里写图片描述

spring配置

依赖关系

画依赖关系图是为了Spring配置做铺垫

这里写图片描述
Spring中的配置代码
配置数据库连接池方法用法:

<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///jdbctest"></property><property name="user" value="root"></property><property name="password" value="1234"></property>
</bean>

为了防止每次修改数据库连接池里面配置的参数都需要打开xml文件,可以把参数写在properties文件中,然后在xml中调用的时候用${key名字}
读取外部的Properties配置:

jdbc.jdbcUrl=jdbc:mysql:///hibernate_32
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=1234

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd "><!-- 指定spring读取db.properties配置 -->
<context:property-placeholder location="classpath:db.properties"  /><!-- 1.将连接池放入spring容器 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ><property name="jdbcUrl" value="${jdbc.jdbcUrl}" ></property><property name="driverClass" value="${jdbc.driverClass}" ></property><property name="user" value="${jdbc.user}" ></property><property name="password" value="${jdbc.password}" ></property>
</bean><!-- 2.将JDBCTemplate放入spring容器 -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" ><property name="dataSource" ref="dataSource" ></property>
</bean><!-- 3.将UserDao放入spring容器 -->
<bean name="userDao" class="cn.itcast.a_jdbctemplate.UserDaoImpl" ><!-- <property name="jt" ref="jdbcTemplate" ></property> --><property name="dataSource" ref="dataSource" ></property>
</bean></beans>

练习代码:
存储的对象:

package com.jdbc.learn;public class User {String name;Integer age;Integer id;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}}

UserDaoImpl实现类

package com.jdbc.learn;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;public class UserDaoImpl implements UserDao {private JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public void save(User user) {String sql = "insert into userdemo value(?,?,null)";jdbcTemplate.update(sql, user.getName(), user.getAge());}}

测试类:

package com.jdbc.learn;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:com/jdbc/learn/applicationContext.xml")
public class JdbcDemo {@Resource(name="userDao")private UserDao userDao ;@Testpublic void fun22(){User user = new User();user.setAge(18);user.setName("weijie");userDao.save(user);}
}

进阶内容

JDBCDaoSupport的使用

在实现方法中继承JDBCDaoSupport类,这样在调用JdbcTemplate时候不需要去new JdbcTemplate的对象再去调用里面的方法,直接通过super父类中的方法获取对象:super.getJdbcTemplate(),注意在容器中配置的时候就不需要将template放入容器中,然后把dataSource指向userDao类中

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd "><!-- 指定spring读取db.properties配置 -->
<context:property-placeholder location="classpath:db.properties"  /><!-- 1.将连接池放入spring容器 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ><property name="jdbcUrl" value="${jdbc.jdbcUrl}" ></property><property name="driverClass" value="${jdbc.driverClass}" ></property><property name="user" value="${jdbc.user}" ></property><property name="password" value="${jdbc.password}" ></property>
</bean><!-- 2.将JDBCTemplate放入spring容器 -->
<!-- <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" ><property name="dataSource" ref="dataSource" ></property>
</bean> --><!-- 3.将UserDao放入spring容器 -->
<bean name="userDao" class="cn.itcast.a_jdbctemplate.UserDaoImpl" ><!-- <property name="jt" ref="jdbcTemplate" ></property> --><property name="dataSource" ref="dataSource" ></property>
</bean></beans>

UserDao接口

package com.jdbc.learn;public interface UserDao {void save(User user);}

UserDao

package cn.itcast.a_jdbctemplate;import java.util.List;import cn.itcast.bean.User;public interface UserDao {//增void save(User u);//删void delete(Integer id);//改void update(User u);//查User getById(Integer id);//查int getTotalCount();//查List<User> getAll();
}

UserDaoImpl

package cn.itcast.a_jdbctemplate;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;import cn.itcast.bean.User;
//使用JDBC模板实现增删改查
public class UserDaoImpl extends JdbcDaoSupport implements UserDao {@Overridepublic void save(User u) {String sql = "insert into t_user values(null,?) ";super.getJdbcTemplate().update(sql, u.getName());}@Overridepublic void delete(Integer id) {String sql = "delete from t_user where id = ? ";super.getJdbcTemplate().update(sql,id);}@Overridepublic void update(User u) {String sql = "update  t_user set name = ? where id=? ";super.getJdbcTemplate().update(sql, u.getName(),u.getId());}@Overridepublic User getById(Integer id) {String sql = "select * from t_user where id = ? ";return super.getJdbcTemplate().queryForObject(sql,new RowMapper<User>(){@Overridepublic User mapRow(ResultSet rs, int arg1) throws SQLException {User u = new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));return u;}}, id);}@Overridepublic int getTotalCount() {String sql = "select count(*) from t_user  ";Integer count = super.getJdbcTemplate().queryForObject(sql, Integer.class);return count;}@Overridepublic List<User> getAll() {String sql = "select * from t_user  ";List<User> list = super.getJdbcTemplate().query(sql, new RowMapper<User>(){@Overridepublic User mapRow(ResultSet rs, int arg1) throws SQLException {User u = new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));return u;}});return list;}}

测试类:

package cn.itcast.a_jdbctemplate;import java.beans.PropertyVetoException;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mchange.v2.c3p0.ComboPooledDataSource;import cn.itcast.bean.User;//演示JDBC模板
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {@Resource(name="userDao")private UserDao ud;@Testpublic void fun1() throws Exception{//0 准备连接池ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass("com.mysql.jdbc.Driver");dataSource.setJdbcUrl("jdbc:mysql:///hibernate_32");dataSource.setUser("root");dataSource.setPassword("1234");//1 创建JDBC模板对象JdbcTemplate jt = new JdbcTemplate();jt.setDataSource(dataSource);//2 书写sql,并执行String sql = "insert into t_user values(null,'rose') ";jt.update(sql);}@Testpublic void fun2() throws Exception{User u = new User();u.setName("tom");ud.save(u);}@Testpublic void fun3() throws Exception{User u = new User();u.setId(2);u.setName("jack");ud.update(u);}@Testpublic void fun4() throws Exception{ud.delete(2);}@Testpublic void fun5() throws Exception{System.out.println(ud.getTotalCount());}@Testpublic void fun6() throws Exception{System.out.println(ud.getById(1));}@Testpublic void fun7() throws Exception{System.out.println(ud.getAll());}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring中aop事务

文章目录事务为什要用到Spring中AOP事务事物的特性 ACID事务并发问题事务的隔离级别spring事务管理事务操作事务操作对象spring管理事务的属性介绍spring管理事务方式编码式xml配置(aop)注解配置Transactional注解在方法上添加Transactional注解在类上添加实际案例xml配置注入a…

Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构

文章目录Mybatis介绍jdbc操作数据库原生写法使用jdbc编程问题总结Mybatis架构Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个…

利用Mybatis写第一个数据库操作的程序

文章目录mybatis下载业务需求环境搭建加入配置文件创建pojosql映射文件加载映射文件实现根据id查询用户测试程序&#xff1a;效果mybatis下载 mybaits的代码由github.com管理 下载地址&#xff1a;https://github.com/mybatis/mybatis-3/releases 下载的mybatis文件如下&#…

利用Mybatis对数据库进行增删改查操作

文章目录mybatis模糊查找先来了解一下 #{}和${}的使用parameterType和resultType的使用selectOne和selectList的使用mysql自增主键返回方法一&#xff1a;mysql的函数函数返回方法二&#xff1a;定义useGeneratedKeys为true返回Mysql使用 uuid实现主键看到UUID和自增长的id想必…

聚合和组合的关系

转自&#xff1a;http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 记得在当时学习uml总是不好分清聚合与组合的关系&#xff0c;找工作时特地复习了这块的内容&#xff0c;结果正巧被面试官问道&#xff0c;这两天又在搞这块的内容&#xff0c;对聚合与组合…

关联和依赖的区别

最近研究设计模式&#xff0c;看类图有点发虚&#xff01;有些关系搞的不是很清楚。所以整理一下&#xff1a; 类与类之间由弱到强关系是: 没关系 > 依赖 > 关联 > 聚合 > 组合。 类和类之间八竿子打不着那就是没关系&#xff0c;这个没啥歧义。 依赖(dependenc…

Mybatis解决jdbc编程的问题以及mybatis与hibernate的不同

Mybatis解决jdbc编程的问题: 1、 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能&#xff0c;如果使用数据库连接池可解决此问题。 解决&#xff1a;在SqlMapConfig.xml中配置数据连接池&#xff0c;使用连接池管理数据库链接。 2、 Sql语句写在代码中造成代码不…

Mybatis中Mapper动态代理方式

文章目录开发规范Mapper接口开发需要遵循以下规范Mapper.xml(映射文件)UserMapper(接口文件)加载UserMapper.xml文件总结selectOne和selectList:namespace:开发规范 Mapper接口开发方法只需要程序员编写Mapper接口&#xff08;相当于Dao接口&#xff09;&#xff0c;由Mybatis…

数据结构实验之数组二:稀疏矩阵

题目描述 对于一个n*n的稀疏矩阵M(1 < n < 1000)&#xff0c;采用三元组顺序表存储表示&#xff0c;查找从键盘输入的某个非零数据是否在稀疏矩阵中&#xff0c;如果存在则输出OK&#xff0c;不存在则输出ERROR。稀疏矩阵示例图如下&#xff1a; 输入 连续输入多组数据…

Mybatis中SqlMapConfig.xml配置文件的使用

文章目录SqlMapConfig.xml中配置的内容和顺序如下properties&#xff08;属性)SqlMapConfig.xml引用如下typeAliases&#xff08;类型别名)mybatis支持别名&#xff1a;自定义别名mappers&#xff08;映射器)Mapper引入映射器的几种方法:1.通过resource属性引入classpath路径的…

数据结构实验之数组三:快速转置

题目描述 转置运算是一种最简单的矩阵运算&#xff0c;对于一个m*n的矩阵M( 1 < m < 10000,1 < n < 10000 )&#xff0c;它的转置矩阵T是一个n*m的矩阵&#xff0c;且T( i , j )M( j , i )。显然&#xff0c;一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给…

Mybatis输入映射和输出映射

Mapper.xml映射文件中定义了操作数据库的sql&#xff0c;每个sql是一个statement&#xff0c;映射文件是mybatis的核心。输入参数映射parameterType(输入类型)传递简单类型&#xff1a;如&#xff1a;<select id"queryUserById" parameterType"Integer"…

Mybatis动态sql的使用

通过mybatis提供的各种标签方法实现动态拼接sql。 为什么用if标签? UserMapper.xml配置sql&#xff0c;如下&#xff1a; <!-- 根据条件查询用户 --> <select id"queryUserByWhere" parameterType"user" resultType"user">SELEC…

面向对象设计之CRC卡片

1.什么是 CRC card&#xff1f; CRC (Class-Responsibility-Collaborator) Card是目前比较流行的面向对象分析建模方法。在CRC建模中&#xff0c;用户、设计者、开发人员都有参与&#xff0c;完成对整个面向对象工程的设计。 CRC卡是一个标准索引卡集合&#xff0c;包括三个部分…

Mybatis整合spring

整合思路 1、SqlSessionFactory对象应该放到spring容器中作为单例存在。 2、传统dao的开发方式中&#xff0c;应该从spring容器中获得sqlsession对象。 3、Mapper代理形式中&#xff0c;应该从spring容器中直接获得mapper的代理对象。 4、数据库的连接以及数据库连接池事务…

云计算的理解

原文&#xff1a;http://www.chinacloud.cn/show.aspx?id15917&cid17 老叟发现&#xff0c;即使是一些搞计算机的人&#xff0c;也不了解“云”是什么。于是&#xff0c;俺卖车之余就写了一篇科普&#xff1a; 到底什么是云(云计算) 有很多关于云的介绍。然而&#xff0c;…

什么是Springmvc以及如果编写第一个入门程序

Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如下图&#xff1a; Springmvc处理流程 入门程序 创建web工程 springMVC是表现层框架&#xff0c;需要搭建web工程开发。 如下图创建动态web工程&#xff1a; 输入…

Springmvc架构详解

框架结构 框架结构如下图&#xff1a; 架构流程 1、 用户发送请求至前端控制器DispatcherServlet 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器根据请求url找到具体的处理器&#xff0c;生成处理器对象及处理器拦截器(如果有则生成)一…

Win10下VS2015(WDK10)驱动开发环境配置

1、 概述 微软在”WDK7600“以后就不再提供独立的内核驱动开发包了&#xff0c;而是必须首先安装微软集成开发环境VisualStudio&#xff0c;然后再从微软官网下载集成的WDK开发包、或者离线安装包&#xff0c;但是安装后Visual Studio就集驱动程序开发&#xff0c;编译&…

jquery添加div实现消息聊天框

上代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> &l…