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的例子.我们可以看到为了执行 ...
随机推荐
- php7之严格模式RFC
首先需要开启严格模式: declare(strict_types = ); 严格模式下,形参和返回值可加限制.对返回值的限制需要在参数的()后面加上引号加类型限制即可,例: function demo ...
- javax/servlet/jsp/jstl/core/Config
javax/servlet/jsp/jstl/core/Config springmvc出现的问题. 尝试了各种jar,问题依旧. DispatcherServlet配置如下. <bean id ...
- cocos2dx为Sprite添加触摸事件监听器
1.首先头文件定义事件处理的函数原型 private: bool onTouchBegan(Touch* tTouch,Event* eEvent);//手指按下事件 void onTouchMove ...
- 洛谷P1605:迷宫(DFS)
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右 ...
- build to win读后感
在软件开发的过程中,不能盲目去show自己的成果,而是要大量考虑别人的意见,在广范围的撒网之后,收集意见,最后在一锤定音. 还有就是,要懂得团队合作,例如,本文介绍了一个事例,作者的团队与科研团队合作 ...
- 统一社会信用代码+组织机构代码 校验 python
转自: https://blog.csdn.net/warrah/article/details/69338912 https://blog.csdn.net/qq_37142340/article/ ...
- OpenLDAP一登录系统就修改密码
1:修改配置文件 在前面打开注释 moduleload ppolicy.la modulepath /usr/lib/openldap modulepath /usr/lib64/openldap ...
- 3.1 MathType上标位置调整的两种方法
具体操作步骤如下: 1.打开MathType窗口后在工作区域中编辑好公式. 2.调整上标位置有两种方法: (1)选中要调整的上标,按下“Ctrl+↑,Ctrl+↓,Ctrl+←,Ctrl+→”进行调整 ...
- [转]SQL server2008 导入超大SQL脚本文件(超过10M)
同事给我一个sqlserver的学习库,sql脚本导出有300m,gui执行有内存溢出的错误报出来,所以问了一下度娘,学而时习之:) 1. SQL server2008 导入超大SQL脚本文件(超过1 ...
- jsp中forward与redirect
一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下: request.getRequestDispatcher("new.jsp").forward(reques ...