`

Spring4学习(三)JdbcTemplate访问数据库

阅读更多

        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

分享到:
评论

相关推荐

    Spring boot 使用JdbcTemplate访问数据库

    SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物。本文重点给大家介绍spring boot 使用JdbcTemplate访问数据库,需要的朋友可以参考下

    基于spring freemarker jdbctemplate jquery的一个完整的项目例子

    初次学习spring。才看了《spring 3.x》第一章内容,写的一个例子;感觉写得挺经典的。 于是骄傲地分享出来。...jdbctemplate访问数据库;log4j配置文件;json拼凑; jquery技术;分库分表访问的设计;

    Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧

    基于java的企业级应用开发:Spring Jdbc.ppt

    Spring JdbcTemplate的解析 从JdbcTemplate的继承关系图可以看出,JdbcTemplate类的直接父类是JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性。 其主要功能是获取数据库连接,还可以引入对数据库...

    在Java的Servlet中使用Spring JdbcTemplate-Eclipse版

    本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到Eclipse中进行调试运行,注意默认编译器是JDK1.8。

    springboot-集成达梦数据库-源代码

    jpa-hibernate-dm: 数据库为{国产达梦数据库},持久层技术为jpa-hibernate mybatis-dm: 数据库为{国产达梦数据库},持久层技术为mybatis mybatis-plus-dm: 数据库为{国产达梦数据库},持久层技术为mybatis-plus 补充...

    在Java的Servlet中使用Spring JdbcTemplate-MyEclipse版.rar

    本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到MyEclipse中进行调试运行,注意默认编译器是JDK1.6。

    Spring jdbcTemplate调用Oracle存储过程返回List集合

    Spring jdbcTemplate 是一个强大的 JDBC 模板,提供了简洁的方式来访问数据库。在此文档中,我们将介绍如何使用 Spring jdbcTemplate 调用 Oracle 存储过程返回 List 集合。 Oracle 存储过程 ------------- 在 ...

    酒店预订管理系统

    (1)JSF和Spring的集成配置:将JSF作为前端,Spring...(2)JdbcTemplate的使用:该应用使用Spring中的JdbcTemplate来访问数据库,使得开发不必书写底层JDBC的代码,简化了开发,详见DBUtil类的开发以及Spring的配置文件。

    Spring3.X编程技术与应用,完整扫描版

    全书分3篇共21章,具体内容包括:Spring环境的安装与使用、JSP与JSTL简介、 Spring基础概念与工具、用SpringJdbcTemplate访问数据库、使用Mayen工程、Spring MVC编程、基于 MVC的资源共享网站设计、Spring的AOP编程...

    图书管理系统( Spring+Spring MVC+JdbcTemplate).zip

    内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态硬盘 (SSD)、光盘驱动器等,用于长期保存大量的程序和数据。 输入/输出设备:如键盘、...

    Android代码-spring-boot2-learning

    spring-boot2 本文是基于 Spring Boot 2.x 版本进行的系列教程,欢迎关注我的公众号 battcn ...chapter4: 一起来学Spring Boot | 第五篇:使用JdbcTemplate访问数据库 chapter5: 一起来学Spring Boot | 第六篇:整

    Spring Boot 实战开发2022年

    │ 07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.mp4 │ 13 服务调用:如何正确理解 RetTemplate 远程调用实现原理?.mp4 │ 20 服务监控:如何使用 Actuator 组件实现系统监控?.mp4 │ 22 运行管理...

    Spring中文帮助文档

    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. 使用哪个支持框架 ...

    springboot学习

    chapter3-2-2:使用Spring-data-jpa简化数据访问层(推荐) chapter3-2-3:多数据源配置(一):JdbcTemplate chapter3-2-4:多数据源配置(二):Spring-data-jpa chapter3-2-5:使用NoSQL数据库(一):Redis ...

    springboot项目整合.zip

    第五篇:使用JdbcTemplate访问数据库] 第六篇:整合SpringDataJpa] 第七篇:整合Mybatis] 第八篇:通用Mapper与分页插件的集成] 第九篇:整合Lettuce Redis] 第十篇:使用Spring Cache集成Redis] 第十...

    spring boot 全面的样例代码

    - chapter9-1-3:[Spring Cloud构建微服务架构(三)断路器](http://blog.didispace.com/springcloud3/) - chapter9-1-4:[Spring Cloud构建微服务架构(四)分布式配置中心]...

    Web服务启动时自动加载Servlet,并读取数据库内容

    我操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,读取数据库数据,其实现在的关键就是得到这个service的实例化对象,

    Spring.3.x企业应用开发实战(完整版).part2

    第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 批量更改数据...

Global site tag (gtag.js) - Google Analytics