Spring学习笔记:jdbcTemplate和数据源配置
一、使用Spring框架jdbcTemplate实现数据库的增删改查
1.数据库
- /*
- SQLyog Ultimate v8.32
- MySQL - 5.7.19-log : Database - infosm
- *********************************************************************
- */
- /*!40101 SET NAMES utf8 */;
- /*!40101 SET SQL_MODE=''*/;
- /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
- /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
- /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
- /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
- CREATE DATABASE /*!32312 IF NOT EXISTS*/`infosm` /*!40100 DEFAULT CHARACTER SET utf8 */;
- USE `infosm`;
- /*Table structure for table `infosm_news` */
- DROP TABLE IF EXISTS `infosm_news`;
- CREATE TABLE `infosm_news` (
- `newsid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '咨询ID',
- `newstitle` varchar(50) DEFAULT NULL COMMENT '咨询标题',
- `newscontent` varchar(1000) DEFAULT NULL COMMENT '资讯内容',
- `clickcount` bigint(20) DEFAULT NULL COMMENT '点击数',
- PRIMARY KEY (`newsid`)
- ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='新闻资讯表';
- /*Data for the table `infosm_news` */
- insert into `infosm_news`(`newsid`,`newstitle`,`newscontent`,`clickcount`) values (1,'大家一起来学JAVA吧','JAVA是不可或缺的程序语言',9),(2,'好好学习','天天向上',3),(3,'我最喜欢的歌曲','黯然销魂',2),(4,'哈哈哈','色调风格的',0),(5,'谁狗带','电饭锅',NULL);
- /*Table structure for table `infosm_talk` */
- DROP TABLE IF EXISTS `infosm_talk`;
- CREATE TABLE `infosm_talk` (
- `tid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '评论编号',
- `content` varchar(200) DEFAULT NULL COMMENT '评论内容',
- `talktime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '评论时间',
- `nid` bigint(20) DEFAULT NULL COMMENT '咨询ID',
- PRIMARY KEY (`tid`)
- ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COMMENT='评论表';
- /*Data for the table `infosm_talk` */
- insert into `infosm_talk`(`tid`,`content`,`talktime`,`nid`) values (1,'很不错,我想学','2017-09-26 12:54:15',1),(2,'大家一起来学吧','2017-09-26 12:54:37',1),(3,'今天考试','2017-09-26 16:15:12',2),(4,'天气很不错哦','2017-09-26 16:15:36',1),(5,'哈哈哈','2017-09-26 17:01:24',2),(6,'国庆节放假啦','2017-09-29 12:08:22',3),(7,'中秋节放假啦','2017-09-29 12:38:58',3),(8,'中秋节放假啦','2017-09-29 13:56:21',3),(9,'中秋节放假啦','2017-09-29 13:56:22',3),(10,'中秋节放假啦','2017-09-29 13:56:23',3),(11,'中秋节放假啦','2017-09-29 13:56:23',3),(12,'中秋节放假啦','2017-09-29 13:56:23',3),(13,'中秋节放假啦','2017-09-29 13:56:23',3),(14,'中秋节放假啦','2017-09-29 13:56:23',3),(15,'中秋节放假啦','2017-09-29 13:56:24',3),(16,'中秋节放假啦','2017-09-29 13:56:39',1),(17,'中秋节放假啦','2017-09-29 13:56:40',1),(18,'中秋节放假啦','2017-09-29 13:56:40',1),(19,'中秋节放假啦','2017-09-29 13:56:40',1),(20,'中秋节放假啦','2017-09-29 13:56:40',1),(21,'中秋节放假啦','2017-09-29 13:56:40',1),(22,'中秋节放假啦','2017-09-29 13:56:40',1),(23,'中秋节放假啦','2017-09-29 13:56:41',1),(24,'中秋节放假啦','2017-09-29 13:56:41',1),(25,'中秋节放假啦','2017-09-29 13:56:41',1),(26,'中秋节放假啦','2017-09-29 13:56:50',5),(27,'中秋节放假啦','2017-09-29 13:56:50',5),(28,'中秋节放假啦','2017-09-29 13:56:51',5),(29,'中秋节放假啦','2017-09-29 13:56:51',5),(30,'中秋节放假啦','2017-09-29 13:56:51',5),(31,'中秋节放假啦','2017-09-29 13:56:57',4),(32,'中秋节放假啦','2017-09-29 13:56:57',4),(33,'中秋节放假啦','2017-09-29 13:56:57',4),(34,'中秋节放假啦','2017-09-29 13:56:57',4);
- /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
- /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
- /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
- /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
2.使用maven导入相关Jar包
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>4.2.0.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>4.2.0.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.43</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.0.18</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
- <dependency>
- <groupId>c3p0</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.1.2</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- <version>1.4</version>
- </dependency>
- </dependencies>
3.项目框架结构
4.接口和类的代码
bean:
- public class News {
- private Integer newsid;
- private String newstitle;
- private String newscontent;
- private Integer clickcount;
- public Integer getNewsid() {
- return newsid;
- }
- public void setNewsid(Integer newsid) {
- this.newsid = newsid;
- }
- public String getNewstitle() {
- return newstitle;
- }
- public void setNewstitle(String newstitle) {
- this.newstitle = newstitle;
- }
- public String getNewscontent() {
- return newscontent;
- }
- public void setNewscontent(String newscontent) {
- this.newscontent = newscontent;
- }
- public Integer getClickcount() {
- return clickcount;
- }
- public void setClickcount(Integer clickcount) {
- this.clickcount = clickcount;
- }
- }
- import java.util.Date;
- public class Talk {
- private Integer tid;
- private String content;
- private Date talktime;
- private Integer nid;
- public Integer getTid() {
- return tid;
- }
- public void setTid(Integer tid) {
- this.tid = tid;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- public Date getTalktime() {
- return talktime;
- }
- public void setTalktime(Date talktime) {
- this.talktime = talktime;
- }
- public Integer getNid() {
- return nid;
- }
- public void setNid(Integer nid) {
- this.nid = nid;
- }
- }
dao:
- import java.util.List;
- public interface INewsDao {
- public List<News> findAll();
- }
- import cn.infosm.bean.News;
- import cn.infosm.dao.INewsDao;
- import org.springframework.jdbc.core.RowMapper;
- import org.springframework.jdbc.core.support.JdbcDaoSupport;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.List;
- public class NewsDaoImpl extends JdbcDaoSupport implements INewsDao {
- @Override
- public List<News> findAll() {
- String sql = "SELECT * FROM infosm_news";
- List<News> list = getJdbcTemplate().query(sql, new RowMapper<News>() {
- @Override
- public News mapRow(ResultSet rs, int rowNum) throws SQLException {
- News news = new News();
- news.setNewsid(rs.getInt("newsid"));
- news.setNewstitle(rs.getString("newstitle"));
- news.setNewscontent(rs.getString("newscontent"));
- news.setClickcount(rs.getInt("clickcount"));
- return news;
- }
- });
- return list;
- }
- }
service:
- import java.util.List;
- public interface INewsService {
- public List<News> findAll();
- }
- import java.util.List;
- public class NewsServiceImpl implements INewsService {
- private INewsDao dao;
- public INewsDao getDao() {
- return dao;
- }
- public void setDao(INewsDao dao) {
- this.dao = dao;
- }
- @Override
- public List<News> findAll() {
- return dao.findAll();
- }
- }
applicationContext.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!--通过bean元素生命需要Spring创建的实例。该实例的类型通过class属性指定,
- 并通过id属性为该实例制定一个名称,以便于访问-->
- <!--DataSource jdbc-->
- <bean id="dateSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql:///infosm"/>
- <property name="username" value="root"/>
- <property name="password" value="tengyu"/>
- </bean>
- <!--jdbcTemplate-->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource" ref="dateSource"/>
- </bean>
- <!--newsDao-->
- <bean id="newsDao" class="cn.infosm.dao.impl.NewsDaoImpl">
- <property name="jdbcTemplate" ref="jdbcTemplate"/>
- </bean>
- <!--newsService-->
- <bean id="newsService" class="cn.infosm.service.impl.NewsServiceImpl">
- <property name="dao" ref="newsDao"/>
- </bean>
- <!--talkDao-->
- <bean id="talkDao" class="cn.infosm.dao.impl.TalkDaoImpl">
- <property name="jdbcTemplate" ref="jdbcTemplate"/>
- </bean>
- <!--talkService-->
- <bean id="talkService" class="cn.infosm.service.impl.TalkServiceImpl">
- <property name="dao" ref="talkDao"/>
- </bean>
- </beans>
测试类:
- import java.util.List;
- public class NewsMapperTest {
- @Test
- public void findAllNews(){
- ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- INewsService newsService = (INewsService) context.getBean("newsService");
- List<News> list = newsService.findAll();
- for (News news :list) {
- System.out.println(news.getNewstitle());
- }
- }
- @Test
- public void findAllTalks(){
- ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- ITalkService talkService = (ITalkService) context.getBean("talkService");
- List<Talk> list = talkService.findAll();
- for (Talk talk :list) {
- System.out.println(talk.getTid()+talk.getContent()+talk.getTalktime());
- }
- }
- }
二、修改数据源,多种数据源配置方法(applicationContext.xml中替换jdbc数据源)
1、dbcp数据源
- <!--DataSource dbcp-->
- <!--<bean id="dateSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql:///infosm"/>
- <property name="username" value="root"/>
- <property name="password" value="tengyu"/>
- </bean>-->
2、c3p0数据源
- <!--DataSource c3p0-->
- <!--<bean id="dateSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="com.mysql.jdbc.Driver"/>
- <property name="jdbcUrl" value="jdbc:mysql:///infosm"/>
- <property name="user" value="root"/>
- <property name="password" value="tengyu"/>
- </bean>-->
3、druid数据源(alibaba)
- <!--DataSource druid-->
- <!--<bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql:///infosm"/>
- <property name="username" value="root"/>
- <property name="password" value="tengyu"/>
- </bean>-->
三、修改数据源时需要引入相应的架包(注意)
maven引入依赖
Spring学习笔记:jdbcTemplate和数据源配置的更多相关文章
- Spring学习笔记之六(数据源的配置)
1.前言 上一篇博客分析了,Spring中实现AOP的两种动态代理的机制,以下这篇博客.来解说一下Spring中的数据源的配置. 2.DAO支持的模板类 Spring提供了非常多关于Dao支持的模板 ...
- Spring Boot之JdbcTemplate多数据源配置与使用
之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...
- Spring学习笔记(2)——Bean的配置
要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...
- spring学习笔记一 入门及配置
Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Sp ...
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- SpringBoot学习笔记:动态数据源切换
SpringBoot学习笔记:动态数据源切换 数据源 Java的javax.sql.DataSource接口提供了一种处理数据库连接的标准方法.通常,DataSource使用URL和一些凭据来建立数据 ...
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- spring学习笔记(一) Spring概述
博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书. 强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...
随机推荐
- SFML从入门到放弃(0) 配置环境
SFML从入门到放弃(0) 配置环境 恩..开始划水..学sfml的时候顺便做点笔记什么的.. 安装 在linux里面打开终端 然后输入 sudo apt-get install libsfml-de ...
- django数据模型中关于on_delete的使用
django数据模型中关于on_delete的使用 class BookModel(models.Model): """ 书籍表 """ b ...
- Easyui里面动态设置输入框的可见性
JQuery EasyUI 动态隐藏 一.隐藏datagrid某一列 $('#dg').datagrid('hideColumn', 'field'); 二.隐藏html的lable.input标 ...
- UIView-frame-VS-bounds
分享链接
- 函数新特性、内联函数、const详解
一.函数回顾与后置返回类型 函数定义中,形参如果在函数体内用不到的话,则可以不给形参变量名字,只给其类型. 函数声明时,可以只有形参类型,没有形参名 把函数返回类型放到函数名字之前,这种写法,叫前置返 ...
- 9012年,我终于找到了Pypi稳定的源....
前情提要 近日听说华为也做了一个华为开源镜像站所以去体验了一波然后此处做个总结吧. 既然是体验当然是从直观的第一感觉UI开始说起. 界面体验 一点进去挺好的界面很清爽. 最难能可贵的是终于没有再使用列 ...
- CSS 两个行内块元素,宽度相加刚好等于父盒子容器的元素,但第二个元素掉在第二行解决办法
我们可以发现:两个行内块元素,宽度相加刚好等于父盒子容器的元素,但第二个元素掉在第二行,这是什么问题呢? 我们先来看一下效果: <!DOCTYPE html> <html lang= ...
- [NodeJS]Jenkins-cli
使用npm 包nestor 触发jenkins job, 达到命令行管理Jenkins功能. 1. install nestor : npm install -g nestor 2. set JENK ...
- history.back返回是浏览器错误码:ERR_CACHE_MISS
解决方法: 如果访问的是php文件中添加:header("Cache-control: private"); 如果使用的是模板引擎(tp5):{php}header("C ...
- 导出excel设置样式(Aspose.Cells)
Aspose.Cells.Style style = xlBook.Styles[xlBook.Styles.Add()];style1.Pattern = Aspose.Cells.Backgrou ...