目录

1.JdbcTemplate类

传统的jdbc开始,需要对Connection、Stream的创建、使用和关闭一一操作。开发负责,代码耦合。在Spring中提供JdbcTemplate简化开发。配合连接池数据库的jdbc操作将和简单

1.1导入jar包

其中,tx是事务管理,接下来用。这里咱不用理会。

1.2创建Dao对象

创建Dao对象,在Dao对象中通过DataSource类来管理连接,通过JdbcTemplate类来处理sql。注意DataSource类是:javax.sql.DataSource


import org.springframework.jdbc.core.JdbcTemplate; import java.util.List;
import java.util.Map; /**
* Created by liyue on 2016/11/30.
*/
public class PersonDao
{
private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate()
{
return jdbcTemplate;
} public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
{
this.jdbcTemplate = jdbcTemplate;
} public void save(String sql)
{
System.out.println("保存开始:");
//插入、保存和更新这一类都是update
jdbcTemplate.update(sql);
System.out.println("保存结束");
} public void queryForList()
{
String sql = "SELECT * FROM role LIMIT 100;";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
System.out.println(list);
} public void queryById(int id)
{
String sql = "SELECT * FROM role WHERE r_id = " + String.valueOf(id) + ";";
Map<String, Object> m = jdbcTemplate.queryForMap(sql);
System.out.println(m);
}
}

然后配置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"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
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 http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--数据源:c3p0连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///hi"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="initialPoolSize" value="3"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!--Dao对象-->
<bean id="personDao" class="per.liyue.spring.jdbc_base.PersonDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>

最后写测试调用例子

package per.liyue.spring.jdbc_base;

import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map; /**
* Created by liyue on 2016/11/30.
*/
public class PersonDao
{
private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate()
{
return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
{
this.jdbcTemplate = jdbcTemplate; } public void save(String sql)
{
System.out.println("保存开始:");
//插入、保存和更新这一类都是update jdbcTemplate.update(sql);
System.out.println("保存结束"); } public void queryForList()
{
String sql = "SELECT * FROM role LIMIT 100;";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
System.out.println(list); } public void queryById(int id)
{
String sql = "SELECT * FROM role WHERE r_id = " + String.valueOf(id) + "; ";
Map<String, Object> m = jdbcTemplate.queryForMap(sql);
System.out.println(m); } }

1.3将上述例子封装后

增加一个查询结果类

package per.liyue.spring.jdbc_base;

/**
* Created by liyue on 2016/11/30.
*/
public class Role
{
private int roleId; public int getRoleId()
{
return roleId;
} public void setRoleId(int roleId)
{
this.roleId = roleId;
} public String getRoleName()
{
return roleName;
} public void setRoleName(String roleName)
{
this.roleName = roleName;
} private String roleName; @Override
public String toString()
{
return "roleId: " + roleId + " roleName: " + roleName;
}
}

改造Dao类

package per.liyue.spring.jdbc_base;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; /**
* Created by liyue on 2016/11/30.
*/
public class PersonDao
{
private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate()
{
return jdbcTemplate;
} public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
{
this.jdbcTemplate = jdbcTemplate;
} public void save(String sql)
{
System.out.println("保存开始:"); //插入、保存和更新这一类都是update
jdbcTemplate.update(sql);
System.out.println("保存结束");
} public void queryForList()
{
String sql = "SELECT * FROM role LIMIT 100;";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
System.out.println(list);
} public Role queryById(int id)
{
String sql = "SELECT * FROM role WHERE r_id = " + String.valueOf(id) + ";"; /* 简单查询 Map<String, Object>m = jdbcTemplate.queryForMap(sql); System.out.println(m); */ /* 封装查询 */
List<Role> list = jdbcTemplate.query(sql, new MyResult());
return ((list != null) && (list.size() > 0)) ? list.get(0) : null;
} class MyResult implements RowMapper<Role>
{
@Override
public Role mapRow(ResultSet resultSet, int i) throws SQLException
{
Role role = new Role();
role.setRoleId(resultSet.getInt("r_id"));
role.setRoleName(resultSet.getString("r_name"));
return role;
}
}
}
package per.liyue.spring.jdbc_base;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by liyue on 2016/11/30.
*/
public class App
{
private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("per/liyue/spring/jdbc_base/applicationContext.xml"); @Test
public void testSave()
{
System.out.println("开始:");
PersonDao personDao = applicationContext.getBean("personDao", PersonDao.class);
String sql = "INSERT INTO role(r_name) VALUE('架构')";
personDao.save(sql);
System.out.println("结束");
} @Test
public void find100()
{
System.out.println("开始:");
PersonDao personDao = applicationContext.getBean("personDao", PersonDao.class);
personDao.queryForList();
System.out.println("结束");
} @Test
public void findById()
{
System.out.println("开始:");
PersonDao personDao = applicationContext.getBean("personDao", PersonDao.class);
Role role = personDao.queryById(1);
System.out.println(role);
System.out.println("结束");
}
}

2.


3.

35.Spring-jdbc支持.md的更多相关文章

  1. Spring对jdbc支持

    4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...

  2. 开涛spring3(7.5) - 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践

    7.5 集成Spring JDBC及最佳实践 大多数情况下Spring JDBC都是与IOC容器一起使用.通过配置方式使用Spring JDBC. 而且大部分时间都是使用JdbcTemplate类(或 ...

  3. Spring学习五(JDBC支持)

    Spring的jdbc支持 1配置db.properties,将有关JDBC的信息载入 2bean文件配置数据源,这里用e3p0作为数据源载入db.properties 3配置template的bea ...

  4. Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理

    Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架 ...

  5. Spring JDBC

    转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...

  6. Spring学习进阶(四) Spring JDBC

    Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...

  7. Spring入门(10)-Spring JDBC

    Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...

  8. Spring 4 支持的 Java 8 特性

    Spring 框架 4 支持 Java 8 语言和 API 功能.在本文中,我们将重点放在 Spring 4 支持新的 Java 8 的功能.最重要的是 Lambda 表达式,方法引用,JSR-310 ...

  9. Spring04-SpringEL&Spring JDBC数据访问

    一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 ...

  10. ref:Spring JDBC框架

    ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...

随机推荐

  1. [转] C++ 和 python之间的互相调用

    转载自:https://www.cnblogs.com/apexchu/p/5015961.html 一.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不 ...

  2. IC卡热复位时序

    热复位(warm reset):在时钟CLK和电源电压VCC处于激活状态的前提下,IC卡收到复位信号时产生的复位. 冷复位过程之后,如果收到的复位应答信号不满足规定,终端将启动热复位并从IC卡获得复位 ...

  3. Codeforces1062D. Fun with Integers(埃氏筛)

    题目链接:传送门 题目: D. Fun with Integers time limit per test seconds memory limit per test megabytes input ...

  4. PHP面试题学习

    PHP 开发工程师笔试试卷 姓名 :__________ 第一部分为必答题,第二.三部分任选其一回答 一. PHP 开发部分 1.合并两个数组有几种方式,试比较它们的异同. 2.请写一个函数来检查用户 ...

  5. PythonStudy——Python 注释规范

    注释规范:   什么是注释?  注释:不会被python解释器解释执行,是提供给开发者阅读代码的提示 单行注释: # 开头的语句 多行注释:出现在文件最上方,用''' '''包裹的语句   Pycha ...

  6. DL服务器主机环境配置(ubuntu14.04+GTX1080+cuda8.0)解决桌面重复登录

    DL服务器主机环境配置(ubuntu14.04+GTX1080+cuda8.0)解决桌面重复登录 前面部分是自己的记录,后面方案部分是成功安装驱动+桌面的正解 问题的开始在于:登录不了桌面,停留在重复 ...

  7. CSRF的防御解决过程

    CSRF是什么,就不多说,网络上的帖子多的去了,关于其定义. 这里主要介绍我们项目中,是如何解决这个问题的.方案比较简单,重点是介绍和记录一下遇到的问题和一些小的心得. 1. 解决方案 A. 用户登录 ...

  8. if else和switch case那个效率更高一点

    switch...case写法: switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; } ...

  9. 黑色背景下 vs把{}括号变黑问题

    最近喜欢把VS的背景搞成黑色,据说这样可以对眼睛好一点,然后就蛋疼的碰到点击括号中的内容,括号就变黑的问题,这样黑色背景下就什么看不到了. 原因是装了番茄助手导致的,解决办法,把选中行VA Brace ...

  10. 学习 MeteoInfo二次开发教程(五)

    1.ActiveMapFrame部分没有大问题,按教程来就行. private void SetMapView()和private void ActiveMapFrameChanged(object ...