一、使用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和数据源配置的更多相关文章

  1. Spring学习笔记之六(数据源的配置)

    1.前言 上一篇博客分析了,Spring中实现AOP的两种动态代理的机制,以下这篇博客.来解说一下Spring中的数据源的配置.  2.DAO支持的模板类 Spring提供了非常多关于Dao支持的模板 ...

  2. Spring Boot之JdbcTemplate多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  3. Spring学习笔记(2)——Bean的配置

    要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...

  4. spring学习笔记一 入门及配置

    Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Sp ...

  5. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  6. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  7. SpringBoot学习笔记:动态数据源切换

    SpringBoot学习笔记:动态数据源切换 数据源 Java的javax.sql.DataSource接口提供了一种处理数据库连接的标准方法.通常,DataSource使用URL和一些凭据来建立数据 ...

  8. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...

  9. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  10. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

随机推荐

  1. 514. Freedom Trail

    In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal ...

  2. OCP题库升级,iZ0-052新加的考题及答案整理-18

    18.You want to Install Oracle 11g database software and create a database on ASM Immediately after t ...

  3. [agc016b]Colorful Hats 分类讨论

    Description ​ 有n个人,每个人都戴着一顶帽子.当然,帽子有不同的颜色. ​ 现在,每个人都告诉你,他看到的所有其他人的帽子共有多少种颜色,请问你有没有符合所有人的描述的情况. Input ...

  4. jxl获取excel中的合并的单元格(主要是方法介绍)

    Range[] rangeCells = sheet.getMergedCells();// 返回sheet中合并的单元格数组 for (Range r : rangeCells) {//对数组遍历拿 ...

  5. Beautiful Soup解析网页

    使用前步骤: 1.Beautiful Soup目前已经被移植到bs4,所以导入Beautiful Soup时先安装bs4库. 2.安装lxml库:如果不使用此库,就会使用Python默认的解析器,而l ...

  6. 27.Next Permutation(下一个字典序列)

    Level:   Medium 题目描述: Implement next permutation, which rearranges numbers into the lexicographicall ...

  7. CentOS 7 查看和设置防火墙状态

    CentOS7 默认使用的是firewall作为防火墙 查看防火墙状态 firewall-cmd --state 停止firewall systemctl stop firewalld.service ...

  8. 更改Android编译软件版本(make/gcc/bision)

    一.make版本 1.下载make的压缩包 ftp://ftp.gnu.org/gnu/make/ 2.解压,安装 cd make-x.x ./configuration sh build.sh su ...

  9. 2019.03.29 读书笔记 关于params与可选参数

    void Method1(string str, object a){} void Method2(string str, object a,object b) { } void Method3(st ...

  10. 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性

    本文链接: https://www.cnblogs.com/hchengmx/p/10793037.html 刚刚想注册个微信公众号,就发现了这个问题,在这里记录一下. 已经发到testhome了,链 ...