目录

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. echarts背景分割区域填充不同颜色(x轴为time),实时刷新

    先来看下图片吧,这是实现效果: 思路: 因为要实时刷新,可以使用setInterval(),但是要控制好定时器的起与停,否则容易错乱以及页面卡死: 主要就是利用定时器五秒刷新,重绘echarts图:= ...

  2. git diff 与git format-patch 生成补丁包

    git diff commit_id 会生成最后一次提交到目前修改过的内容补丁 git diff commit_id1 commit_id2 会生成两次提交之间修改过的内容补丁 git format- ...

  3. day08 学习小测试 九九乘法表 车牌划分计算 大文件读取操作

    1.1需求:读取一个100G的文件,检测文件中是否有关键字keys=['苍老师','小泽老师',"alex"], 如果有则替换成"***",并写入到另一个文件中 ...

  4. macbook 显示所有文件夹

    在macbook终端执行如下代码: 1. 设置打开所有的文件 defaults write com.apple.finder AppleShowAllFiles -bool true 2. 关闭之前打 ...

  5. SSH(远程登录)原理

    最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等.下面就用一张图来解释SSH登录验证的 ...

  6. Golang 之 interface接口全面理解

    什么是interface 在面向对象编程中,可以这么说:“接口定义了对象的行为”, 那么具体的实现行为就取决于对象了. 在Go中,接口是一组方法签名(声明的是一组方法的集合).当一个类型为接口中的所有 ...

  7. Hi3516EV100烧录出厂固件

    1.Hitool烧录uboot 2.uboot下烧录固件 setenv serverip 192.168.1.138 mw.b ff ;tftp ;sf probe ;sf erase ;sf wri ...

  8. day11 大纲

    01 昨日内容回顾 函数名的运用: 1,特殊的变量. 2,函数名可以当做变量赋值. 3,函数名可以当做容器类类型的元素. 4,函数名可以当做函数的参数. 5,函数名可以当做函数的返回值. 函数的运用: ...

  9. 新系统centos7重启网络报错

    场景: 在不知名云上新弄的centos7,改了IP之后启动不起来,使用systemctl status network查看结果如下:       排查过程:   1)NetworkManager是否关 ...

  10. Nginx源码结构及如何处理请求

    一.源码结构   1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码       2:src源码目录下,可以看到这几个目录     mail:mail目录中存放了实现Nginx服务器 ...