`

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访问数据库

    在 Spring Boot 中使用 JdbcTemplate 访问数据库,是一种常见且简便的方式,特别适合那些需要对数据库进行基础操作的应用。 JdbcTemplate 是 Spring Framework 提供的一个模板类,它对 JDBC API 进行了封装,使得...

    spring-jdbcTemplate实例工程

    Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行、结果集处理等进行了抽象,使得开发者可以更专注于业务逻辑,而无需过多关注数据库访问的细节。同时,它还提供了事务...

    spring-springMvc-jdbctemplate.rar

    Spring框架支持多种数据访问策略,其中JdbcTemplate是用于简化数据库操作的一个组件。 Spring MVC是Spring框架的一部分,专门用于构建Web应用。它遵循模型-视图-控制器(Model-View-Controller, MVC)设计模式,将...

    Spring Security 3.1 +Spring +Servlet+JdbcTemplate

    通过这个项目,开发者可以学习到如何配置Spring Security的过滤器链、定义权限规则、实现用户认证以及数据库交互。对于想要深入理解Spring Security以及如何在实际项目中使用它的开发者来说,这是一个非常有价值的...

    Struts2+Spring+EasyUI+JDBCTemplate学习源码

    Spring还包含了一个强大的数据访问层,如Spring JDBC和JDBCTemplate,后者简化了数据库操作,避免了大量重复的模板代码。在这个项目中,你会看到如何在Spring配置文件中配置JDBCTemplate,以及如何在服务层使用它来...

    Spring + Hibernate + JdbcTemplate

    Spring可以方便地与JdbcTemplate集成,通过@Autowired注解,Spring可以自动注入JdbcTemplate实例,简化数据库访问代码。同时,Spring的事务管理同样适用于JdbcTemplate,确保了数据库操作的一致性。 在实际项目中,...

    详解在spring中使用JdbcTemplate操作数据库的几种方式

    在Spring框架中,JdbcTemplate是用于简化数据库操作的工具,它提供了一种声明式的方式处理SQL,降低了数据库访问的复杂性。本篇文章将详细介绍如何在Spring中使用JdbcTemplate进行数据库操作,包括设置依赖、创建...

    spring的jdbcTemplate小案例

    JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接、预编译SQL语句等繁琐任务。 首先,我们来理解一下JdbcTemplate的基本...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    4. **JdbcTemplate操作数据库** 使用JdbcTemplate,我们可以按以下步骤操作数据库: - **配置JdbcTemplate**:在Spring配置文件中声明一个JdbcTemplate实例,并注入数据源。 - **执行SQL查询**:使用`query...

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate是Spring框架中用于简化Java数据库访问的工具,它是Spring JDBC模块的核心。这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    Spring框架提供了多种模板类来处理不同的数据访问需求,例如JdbcTemplate主要针对关系型数据库的操作。 在使用JdbcTemplate前,需要导入两个jar包: - spring-jdbc-4.2.4.RELEASE.jar:包含JdbcTemplate及与数据库...

    spring jdbc Templatetest 访问mysql数据库,批量插入数据

    本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...

    基于注解的Spring JdbcTemplate

    本教程将深入探讨如何使用基于注解的Spring JdbcTemplate进行数据库操作,特别适合初学者入门学习。 ### 1. Spring JdbcTemplate简介 Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储...

    基于注解方式的spring_mvc_jdbcTemplate

    总结来说,"基于注解方式的spring_mvc_jdbcTemplate"项目是一个学习Spring MVC和JdbcTemplate的起点,它展示了如何使用注解驱动的编程风格实现一个简单的Web应用,包括处理HTTP请求、执行数据库操作以及展示结果。...

    spring-jdbc(jdbctemplate)所需jar包

    JdbcTemplate是Spring JDBC模块中的核心组件,它提供了一种模板化的JDBC操作方式,降低了数据库访问的复杂性,同时保持了良好的封装和异常处理机制。在使用Spring JDBC之前,我们需要确保引入了必要的jar包。这里...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate

    在现代的Java Web开发中,为了进一步提高开发效率,SpringDataJPA和JdbcTemplate也常常被引入,它们都是Spring提供的数据访问抽象层。 **Spring框架**:Spring是一个全面的Java企业级应用开发框架,它提供了AOP...

    struts2.3.4+spring3.1.1+jdbctemplate

    而JdbcTemplate是Spring框架的一部分,用于简化数据库操作。 这个简单的DEMO展示了如何将这三个组件整合起来,构建一个基于Java的Web应用。首先,Struts2作为前端控制器,接收HTTP请求,并通过Action来处理业务逻辑...

    strut2+spring+springjdbctemplate做的简易登录系统

    Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...

    JdbcTemplate操作数据库实现添加功能

    在Java开发中,Spring框架提供了一个强大的数据访问抽象层,其中`JdbcTemplate`是用于简化数据库操作的重要组件。本文将详细讲解如何利用`JdbcTemplate`实现数据库的添加(INSERT)功能,以及它在实际开发中的应用和...

Global site tag (gtag.js) - Google Analytics