Spring4使用JdbcTemplate来访问数据库,并记录一下简单增删改查操作。
创建数据库连接的参数配置文件 jdbc.properties文件,classpath路径下conf/datasource目录下配置如下
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false jdbc.username=root jdbc.password=root
Spring配置文件添加配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用spring注解 --> <!-- <context:annotation-config/> --> <!-- 下面的配置告诉spring容器自动scanner用注解标注bean --> <context:component-scan base-package="org.lian"/> <!--配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <context:property-placeholder location="/conf/datasource/jdbc.properties"/> </beans>
安装jar包,需要引入Spring-jdbc.jar和Spring-tx.jar此外需要引入apache的两个jar包已经上传。
配置准备工作完毕后就可以编写Java代码来使用JdbcTemplate。
两种使用方式放在两个不同的实现类中具体代码见下
@Repository("musicDao") public class MusicDaoImpl implements MusicDao { private JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override public String get(Music music) { /** * select name,singer,author,composer,album,duration,style from t_music */ StringBuilder sql = new StringBuilder(); sql.append("select id, name,singer,author,composer,album,duration,style "); sql.append("from t_music "); sql.append("where id=? "); Music bean = (Music) jdbcTemplate.queryForObject(sql.toString(), new String[] { music.getId() }, new MusicMapper()); Gson gson = new Gson(); return gson.toJson(bean); } private static final class MusicMapper implements RowMapper<Music> { @Override public Music mapRow(ResultSet rs, int rowNum) throws SQLException { Music music = new Music(); music.setName(rs.getString("name")); music.setSinger(rs.getString("singer")); music.setAlbum(rs.getString("album")); music.setAuthor(rs.getString("author")); music.setComposer(rs.getString("composer")); music.setDuration(rs.getString("duration")); music.setId(rs.getString("id")); return music; } } /** * * @description TODO * @return */ @Override public int count(Music music) { String sql = "select count(1) from t_music where name=?"; int count = this.jdbcTemplate.queryForObject(sql, Integer.class, music.getName()); // 两个方式都可以 // this.jdbcTemplate.queryForObject(sql, new String[] { music.getName() }, // Integer.class); return count; } /** * * @description TODO 查询列表 * @param music * @return */ @Override public String list(Music music) { /** * 采用匿名内部类 */ StringBuilder sql = new StringBuilder(); sql.append("select id,name,singer,author,composer,album,duration,style "); sql.append("from t_music "); sql.append("where name=?"); List<Music> list = this.jdbcTemplate.query(sql.toString(), new String[] { music.getName() }, new RowMapper<Music>() { @Override public Music mapRow(ResultSet rs, int rowNum) throws SQLException { Music music = new Music(); music.setName(rs.getString("name")); music.setSinger(rs.getString("singer")); music.setAlbum(rs.getString("album")); music.setAuthor(rs.getString("author")); music.setComposer(rs.getString("composer")); music.setDuration(rs.getString("duration")); music.setId(rs.getString("id")); return music; } }); Gson gson = new Gson(); return gson.toJson(list); } @Override public void update(Music music) { /** * update t_music set name='1232',singer='',author='',composer='', album='', * duration='', style='' where id='12' */ StringBuilder sql = new StringBuilder(); sql.append("update t_music set name=? , singer=? , author=? , composer=? , "); sql.append("album= ? , duration=? , style=? "); sql.append("where id= ? "); Object[] params = new Object[] { music.getName(), music.getSinger(), music.getAuthor(), music.getComposer(), music.getAlbum(), music.getDuration(), music.getStyle(), music.getId() }; this.jdbcTemplate.update(sql.toString(), params); } @Override public void add(Music music) { // TODO Auto-generated method stub /** * insert into t_music (id,name,singer,author,composer,album,duration,style) * values('123','Wonderful U','AGA','AGA','AGA','Ginadoll','04:08','慢摇') */ Object[] params = new Object[] { music.getId(), music.getName(), music.getSinger(), music.getAuthor(), music.getComposer(), music.getAlbum(), music.getDuration(), music.getStyle() }; StringBuilder sql = new StringBuilder(); sql.append("insert into t_music "); sql.append("(id,name,singer,author,composer,album,duration,style) "); sql.append("values(?,?,?,?,?,?,?,?)"); this.jdbcTemplate.update(sql.toString(), params); } @Override public void delete(Music music) { String sql = "delete from t_music where id=? "; this.jdbcTemplate.update(sql, music.getId()); } }
@Repository("musicManagerDao") public class MusicManagerDaoImpl implements MusicDao { private NamedParameterJdbcTemplate namedParameterJdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); } @Override public String get(Music music) { // TODO Auto-generated method stub StringBuilder sql = new StringBuilder(); sql.append("select id, name,singer,author,composer,album,duration,style "); sql.append("from t_music "); sql.append("where id=:id "); // 一旦创建的map不能被修改 Map<String, String> namedParameters = Collections.singletonMap("id", music.getId()); Music bean = this.namedParameterJdbcTemplate.queryForObject(sql.toString(), namedParameters, new RowMapper<Music>() { @Override public Music mapRow(ResultSet rs, int rowNum) throws SQLException { Music music = new Music(); music.setName(rs.getString("name")); music.setSinger(rs.getString("singer")); music.setAlbum(rs.getString("album")); music.setAuthor(rs.getString("author")); music.setComposer(rs.getString("composer")); music.setDuration(rs.getString("duration")); music.setId(rs.getString("id")); return music; } }); Gson gson = new Gson(); return gson.toJson(bean); } @Override public int count(Music music) { // TODO Auto-generated method stub System.out.println(" MusicManagerDaoImpl.count() "); /** * select count(1) from t_music where name='红色高跟鞋' */ String sql = "select count(1) from t_music where name=:name"; Map<String, String> params = new HashMap<String, String>(); params.put("name", music.getName()); SqlParameterSource namedParameters = new MapSqlParameterSource(params); // SqlParameterSource namedParameters = new MapSqlParameterSource("name", // music.getName()); return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class); } @Override public String list(Music music) { // TODO Auto-generated method stub StringBuilder sql = new StringBuilder(); sql.append("select id,name,singer,author,composer,album,duration,style "); sql.append("from t_music "); sql.append("where name=:name"); /** * :name 要与参数类属性保持一致 */ SqlParameterSource namedParameters = new BeanPropertySqlParameterSource( music); List<Music> list = this.namedParameterJdbcTemplate.query(sql.toString(), namedParameters, new RowMapper<Music>() { @Override public Music mapRow(ResultSet rs, int rowNum) throws SQLException { Music music = new Music(); music.setName(rs.getString("name")); music.setSinger(rs.getString("singer")); music.setAlbum(rs.getString("album")); music.setAuthor(rs.getString("author")); music.setComposer(rs.getString("composer")); music.setDuration(rs.getString("duration")); music.setId(rs.getString("id")); return music; } }); Gson gson = new Gson(); return gson.toJson(list); } @Override public void update(Music music) { // TODO Auto-generated method stub } @Override public void add(Music music) { // TODO Auto-generated method stub } @Override public void delete(Music music) { // TODO Auto-generated method stub } public static void main(String[] args) { } }
如果需要深入JdbcTemplate,可以参考SpringAPI
相关推荐
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物。本文重点给大家介绍spring boot 使用JdbcTemplate访问数据库,需要的朋友可以参考下
初次学习spring。才看了《spring 3.x》第一章内容,写的一个例子;感觉写得挺经典的。 于是骄傲地分享出来。...jdbctemplate访问数据库;log4j配置文件;json拼凑; jquery技术;分库分表访问的设计;
本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧
Spring JdbcTemplate的解析 从JdbcTemplate的继承关系图可以看出,JdbcTemplate类的直接父类是JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性。 其主要功能是获取数据库连接,还可以引入对数据库...
本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到Eclipse中进行调试运行,注意默认编译器是JDK1.8。
jpa-hibernate-dm: 数据库为{国产达梦数据库},持久层技术为jpa-hibernate mybatis-dm: 数据库为{国产达梦数据库},持久层技术为mybatis mybatis-plus-dm: 数据库为{国产达梦数据库},持久层技术为mybatis-plus 补充...
本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到MyEclipse中进行调试运行,注意默认编译器是JDK1.6。
Spring jdbcTemplate 是一个强大的 JDBC 模板,提供了简洁的方式来访问数据库。在此文档中,我们将介绍如何使用 Spring jdbcTemplate 调用 Oracle 存储过程返回 List 集合。 Oracle 存储过程 ------------- 在 ...
(1)JSF和Spring的集成配置:将JSF作为前端,Spring...(2)JdbcTemplate的使用:该应用使用Spring中的JdbcTemplate来访问数据库,使得开发不必书写底层JDBC的代码,简化了开发,详见DBUtil类的开发以及Spring的配置文件。
全书分3篇共21章,具体内容包括:Spring环境的安装与使用、JSP与JSTL简介、 Spring基础概念与工具、用SpringJdbcTemplate访问数据库、使用Mayen工程、Spring MVC编程、基于 MVC的资源共享网站设计、Spring的AOP编程...
内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态硬盘 (SSD)、光盘驱动器等,用于长期保存大量的程序和数据。 输入/输出设备:如键盘、...
spring-boot2 本文是基于 Spring Boot 2.x 版本进行的系列教程,欢迎关注我的公众号 battcn ...chapter4: 一起来学Spring Boot | 第五篇:使用JdbcTemplate访问数据库 chapter5: 一起来学Spring Boot | 第六篇:整
│ 07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.mp4 │ 13 服务调用:如何正确理解 RetTemplate 远程调用实现原理?.mp4 │ 20 服务监控:如何使用 Actuator 组件实现系统监控?.mp4 │ 22 运行管理...
7.10.4. ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 ...
chapter3-2-2:使用Spring-data-jpa简化数据访问层(推荐) chapter3-2-3:多数据源配置(一):JdbcTemplate chapter3-2-4:多数据源配置(二):Spring-data-jpa chapter3-2-5:使用NoSQL数据库(一):Redis ...
第五篇:使用JdbcTemplate访问数据库] 第六篇:整合SpringDataJpa] 第七篇:整合Mybatis] 第八篇:通用Mapper与分页插件的集成] 第九篇:整合Lettuce Redis] 第十篇:使用Spring Cache集成Redis] 第十...
- chapter9-1-3:[Spring Cloud构建微服务架构(三)断路器](http://blog.didispace.com/springcloud3/) - chapter9-1-4:[Spring Cloud构建微服务架构(四)分布式配置中心]...
我操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,读取数据库数据,其实现在的关键就是得到这个service的实例化对象,
第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...