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 访问数据库,是一种常见且简便的方式,特别适合那些需要对数据库进行基础操作的应用。 JdbcTemplate 是 Spring Framework 提供的一个模板类,它对 JDBC API 进行了封装,使得...
Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行、结果集处理等进行了抽象,使得开发者可以更专注于业务逻辑,而无需过多关注数据库访问的细节。同时,它还提供了事务...
Spring框架支持多种数据访问策略,其中JdbcTemplate是用于简化数据库操作的一个组件。 Spring MVC是Spring框架的一部分,专门用于构建Web应用。它遵循模型-视图-控制器(Model-View-Controller, MVC)设计模式,将...
通过这个项目,开发者可以学习到如何配置Spring Security的过滤器链、定义权限规则、实现用户认证以及数据库交互。对于想要深入理解Spring Security以及如何在实际项目中使用它的开发者来说,这是一个非常有价值的...
Spring还包含了一个强大的数据访问层,如Spring JDBC和JDBCTemplate,后者简化了数据库操作,避免了大量重复的模板代码。在这个项目中,你会看到如何在Spring配置文件中配置JDBCTemplate,以及如何在服务层使用它来...
Spring可以方便地与JdbcTemplate集成,通过@Autowired注解,Spring可以自动注入JdbcTemplate实例,简化数据库访问代码。同时,Spring的事务管理同样适用于JdbcTemplate,确保了数据库操作的一致性。 在实际项目中,...
在Spring框架中,JdbcTemplate是用于简化数据库操作的工具,它提供了一种声明式的方式处理SQL,降低了数据库访问的复杂性。本篇文章将详细介绍如何在Spring中使用JdbcTemplate进行数据库操作,包括设置依赖、创建...
JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接、预编译SQL语句等繁琐任务。 首先,我们来理解一下JdbcTemplate的基本...
4. **JdbcTemplate操作数据库** 使用JdbcTemplate,我们可以按以下步骤操作数据库: - **配置JdbcTemplate**:在Spring配置文件中声明一个JdbcTemplate实例,并注入数据源。 - **执行SQL查询**:使用`query...
SpringJdbcTemplate是Spring框架中用于简化Java数据库访问的工具,它是Spring JDBC模块的核心。这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及...
Spring框架提供了多种模板类来处理不同的数据访问需求,例如JdbcTemplate主要针对关系型数据库的操作。 在使用JdbcTemplate前,需要导入两个jar包: - spring-jdbc-4.2.4.RELEASE.jar:包含JdbcTemplate及与数据库...
本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...
本教程将深入探讨如何使用基于注解的Spring JdbcTemplate进行数据库操作,特别适合初学者入门学习。 ### 1. Spring JdbcTemplate简介 Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储...
总结来说,"基于注解方式的spring_mvc_jdbcTemplate"项目是一个学习Spring MVC和JdbcTemplate的起点,它展示了如何使用注解驱动的编程风格实现一个简单的Web应用,包括处理HTTP请求、执行数据库操作以及展示结果。...
JdbcTemplate是Spring JDBC模块中的核心组件,它提供了一种模板化的JDBC操作方式,降低了数据库访问的复杂性,同时保持了良好的封装和异常处理机制。在使用Spring JDBC之前,我们需要确保引入了必要的jar包。这里...
在现代的Java Web开发中,为了进一步提高开发效率,SpringDataJPA和JdbcTemplate也常常被引入,它们都是Spring提供的数据访问抽象层。 **Spring框架**:Spring是一个全面的Java企业级应用开发框架,它提供了AOP...
而JdbcTemplate是Spring框架的一部分,用于简化数据库操作。 这个简单的DEMO展示了如何将这三个组件整合起来,构建一个基于Java的Web应用。首先,Struts2作为前端控制器,接收HTTP请求,并通过Action来处理业务逻辑...
Struts2、Spring和Spring JDBC Template是Java Web开发中常用的三个框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理前端请求和业务逻辑;Spring则是一个全面的后端框架,提供...
在Java开发中,Spring框架提供了一个强大的数据访问抽象层,其中`JdbcTemplate`是用于简化数据库操作的重要组件。本文将详细讲解如何利用`JdbcTemplate`实现数据库的添加(INSERT)功能,以及它在实际开发中的应用和...