35.Spring-jdbc支持.md
目录
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的更多相关文章
- Spring对jdbc支持
4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...
- 开涛spring3(7.5) - 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践
7.5 集成Spring JDBC及最佳实践 大多数情况下Spring JDBC都是与IOC容器一起使用.通过配置方式使用Spring JDBC. 而且大部分时间都是使用JdbcTemplate类(或 ...
- Spring学习五(JDBC支持)
Spring的jdbc支持 1配置db.properties,将有关JDBC的信息载入 2bean文件配置数据源,这里用e3p0作为数据源载入db.properties 3配置template的bea ...
- Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理
Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架 ...
- Spring JDBC
转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...
- Spring学习进阶(四) Spring JDBC
Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...
- Spring入门(10)-Spring JDBC
Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...
- Spring 4 支持的 Java 8 特性
Spring 框架 4 支持 Java 8 语言和 API 功能.在本文中,我们将重点放在 Spring 4 支持新的 Java 8 的功能.最重要的是 Lambda 表达式,方法引用,JSR-310 ...
- Spring04-SpringEL&Spring JDBC数据访问
一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 ...
- ref:Spring JDBC框架
ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...
随机推荐
- 剑指Offer 4. 重建二叉树 (二叉树)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- enctype="multipart/form-data"表单传值问题
问题: form表单的enctype设置为multipart/form-data后,表单中除了文件后台能拿到,其他值后台都拿不到. 知识点: 一.application/x-www-form-urle ...
- 我的代码-models
# coding: utf-8 # In[1]: import pandas as pdimport numpy as npfrom sklearn import treefrom sklearn.s ...
- python 使用gevent模块实现手动挡切换多协程。
from greenlet import greenlet def test1(): print(12) g2.switch()#切换到协程g2执行,保存执行状态 print(23) g2.switc ...
- tomcat8.5配置redis实现session共享(tomcat-redis-session-manager-master)
1.将下面几个jar包依赖放到tomcat的lib目录下: 2.修改tomcat/conf下context.xml文件,在<Context>节点添加如下代码: <Valve clas ...
- CodeForces - 444C
F - DZY Loves Colors DZY loves colors, and he enjoys painting. On a colorful day, DZY gets a colorfu ...
- BSGS模板(慢速)
//author Eterna #define Hello the_cruel_world! #pragma GCC optimize(2) #include<iostream> #inc ...
- 第一章 HTML+CSS(中)
4.域元素(form表单.textarea文本域.fieldset域集合.input使用) 案例 表单 用户名: 密码: 昵称: 你喜欢的水果有? 苹果 黄瓜 香蕉 请选择性别 男 女 请选择你要的网 ...
- ASP.NET Core 2.0系列学习笔记-NLog日志配置文件
一.新建ASP.NET Core 2.0 MVC项目,使用NuGet在浏览中搜索:NLog.Web.AspNetCore,如下图所示: 二.在项目的根目录下新建一个xml类型的nlog.config文 ...
- Web APP 日期选择控件
github地址: https://github.com/yuanzm/simple-date-picker#simple-date-picker simple-date-picker 基于zepto ...