springJDBC的几种方法
1、简单粗暴,直接在类中创建连接池使用
package com.xiaostudy; import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.jdbc.core.JdbcTemplate; /**
* @desc 测试类
*
* @author xiaostudy
*
*/
public class Test { public static void main(String[] args) {
//创建连接池
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/user");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建模板
/*JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);*/
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //添加
jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", "xiaostudy", "123456");
//修改
jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", "xiaostudy", "123456", "2");
//删除
jdbcTemplate.update("delete from spring_user where name=? and password=?;", "xiaostudy", "123456"); } }
2、较第一种,就是把业务分开
2.1、domain类User.java
package com.xiaostudy; /**
* @desc domain类
* @author xiaostudy
*
*/
public class User { private Integer id;
private String name;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
} }
2.2、dao类UserDao.java
package com.xiaostudy; import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.jdbc.core.JdbcTemplate; /**
* @desc Dao类
* @author xiaostudy
*
*/
public class UserDao { /**
* @desc 获取模板的方法
* @return JdbcTemplate 返回类型
*/
public JdbcTemplate getJdbcTemplate() {
// 创建连接池
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/user");
dataSource.setUsername("root");
dataSource.setPassword("123456"); // 创建模板
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
} /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
*/
public int insertUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(),
user.getPassword());
} /**
* @desc 修改用户
* @param user 参数
* @param id 参数
* @return int 返回类型
*/
public int updateUser(User user, int id) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(),
user.getPassword(), id);
} /**
* @desc 删除用户
* @param user 参数
* @return int 返回类型
*/
public int deleteUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(),
user.getPassword());
}
}
2.3、测试类Test.java
package com.xiaostudy; /**
* @desc 测试类
* @author xiaostudy
*
*/
public class Test { public static void main(String[] args) {
User user = new User();
user.setName("xiaostudy");
user.setPassword("123456");
UserDao userDao = new UserDao();
// userDao.insertUser(user);
// userDao.updateUser(user, 1);
userDao.deleteUser(user); } }
3、较第二种,接入spring中
3.1、domain类User.java
package com.xiaostudy; /**
* @desc damain类
* @author xiaostudy
*
*/
public class User { private Integer id;
private String name;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
} }
3.2、dao类UserDao.java
package com.xiaostudy; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate; /**
* @desc dao类
* @author xiaostudy
*
*/
public class UserDao { /**
* @desc 获取模板的方法
* @return JdbcTemplate 返回类型
*/
public JdbcTemplate getJdbcTemplate() {
//从spring容器中获取连接池对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
return applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);
} /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
*/
public int insertUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
} /**
* @desc 修改用户
* @param user 参数
* @param id 参数
* @return int 返回类型
*/
public int updateUser(User user, int id) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
} /**
* @desc 删除用户
* @param user 参数
* @return int 返回类型
*/
public int deleteUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
}
}
3.3、spring配置文件applicationContext.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:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 将domain类添加到容器中 -->
<bean id="user" class="com.xiaostudy.User"></bean>
<!-- 将dao类添加到容器中 -->
<bean id="userDao" class="com.xiaostudy.UserDao"></bean>
<!-- 将连接池添加到容器中 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/user"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<!-- 将模板添加到容器中 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
3.4、测试类Test.java
package com.xiaostudy; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* @desc 测试类
* @author xiaostudy
*
*/
public class Test { public static void main(String[] args) {
//获取spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取domain对象
User user = applicationContext.getBean("user", User.class);
user.setName("huangwu");
user.setPassword("123456");
//从容器中获取dao对象
UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
//userDao.insertUser(user);
userDao.updateUser(user, 2);
//userDao.deleteUser(user); } }
4、较第三种,把在spring配置文件中的连接池信息提取到一个配置文件中
4.1、domain类User.java
package com.xiaostudy; /**
* @domain类
* @author xiaostudy
*
*/
public class User { private Integer id;
private String name;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
} }
4.2、dao类UserDao.java
package com.xiaostudy; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate; /**
* @desc dao类
* @author xiaostudy
*
*/
public class UserDao { /**
* @desc 获取模板的方法
* @return JdbcTemplate 返回类型
*/
public JdbcTemplate getJdbcTemplate() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
return applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);
} /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
*/
public int insertUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
} /**
* @desc 修改用户
* @param user 参数
* @param id 参数
* @return int 返回类型
*/
public int updateUser(User user, int id) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
} /**
* @desc 删除用户
* @param user 参数
* @return int 返回类型
*/
public int deleteUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
}
}
4.3、连接池的配置文件dataSource.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user
jdbc.username=root
jdbc.password=123456
4.4、spring配置文件applicationContext.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:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 将domain类添加到容器中 -->
<bean id="user" class="com.xiaostudy.User"></bean>
<!-- 将dao类添加到容器中 -->
<bean id="userDao" class="com.xiaostudy.UserDao"></bean>
<!-- 将连接池的配置文件添加到容器中 -->
<context:property-placeholder location="classpath:dataSource.properties"/>
<!-- 将连接池添加到容器中 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 将模板添加到容器中 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
4.5、测试类Test.java
package com.xiaostudy; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* @desc 测试类
*
* @author xiaostudy
*
*/
public class Test { public static void main(String[] args) {
//获取spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取domain对象
User user = applicationContext.getBean("user", User.class);
user.setName("lisi");
user.setPassword("123456");
//从容器中获取dao对象
UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
//userDao.insertUser(user);
userDao.updateUser(user, 2);
//userDao.deleteUser(user); } }
5、较DBCP,用C3P0连接池,需要改变的就是连接池的包要改变,和连接池配置的名称要改
6、较第五种,把模板添加到容器改成让dao去添加模板
6.1、domain类User.java
package com.xiaostudy; /**
* @desc domain类
* @author xiaostudy
*
*/
public class User { private Integer id;
private String name;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
} }
6.2、dao类UserDao.java
package com.xiaostudy; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport; /**
* @desc dao类
* @author xiaostudy
*
*/
public class UserDao extends JdbcDaoSupport { /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
*/
public int insertUser(User user) {
//从继承的父类中获取模板
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
} /**
* @desc 修改用户
* @param user 参数
* @param id 参数
* @return int 返回类型
*/
public int updateUser(User user, int id) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
} /**
* @desc 删除用户
* @param user 参数
* @return int 返回类型
*/
public int deleteUser(User user) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
}
}
6.3、连接池的配置文件dataSource.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user
jdbc.username=root
jdbc.password=123456
6.4、spring配置文件applicationContext.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:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 将domain类添加到容器中 -->
<bean id="user" class="com.xiaostudy.User"></bean>
<!-- 将dao类添加到容器中 -->
<bean id="userDao" class="com.xiaostudy.UserDao">
<!-- 将连接池给dao,让dao去注入 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 将连接池的配置文件添加到容器中 -->
<context:property-placeholder location="classpath:dataSource.properties"/>
<!-- 将连接池添加到容器中 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
</beans>
6.5测试类Test.java
package com.xiaostudy; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* @desc 测试类
* @author xiaostudy
*
*/
public class Test { public static void main(String[] args) {
//获取spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取domain对象
User user = applicationContext.getBean("user", User.class);
user.setName("sssss");
user.setPassword("123456");
//从容器中获取dao对象
UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
//userDao.insertUser(user);
userDao.updateUser(user, 2);
//userDao.deleteUser(user); } }
springJDBC的几种方法的更多相关文章
- Spring使用jdbcJdbcTemplate和三种方法配置数据源
三种方法配置数据源 1.需要引入jar包:spring-jdbc-4.3.2.RELEASE.jar <!-- spring内置,springJdbc,配置数据源 --> <bean ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- 两个变量交换的四种方法(Java)
对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...
- C#中实现并发的几种方法的性能测试
C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...
- Atitti 载入类的几种方法 Class.forName ClassLoader.loadClass 直接new
Atitti 载入类的几种方法 Class.forName ClassLoader.loadClass 直接new 1.1. 载入类的几种方法 Class.forName ClassLo ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
随机推荐
- 《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象
原创文章,欢迎转载.转载请注明:关东升的博客 内存托管对象 Swift中调用Core Foundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象. 内存托管对象就是由编译器帮助管理内 ...
- 局域网查看工具Lansee注册码
相信好多人为查看局域网IP发愁,今天给大家推荐一个工具 lansee 猛戳下载
- 用angular做的模糊搜索
今天大家来试一试用angular做一下简单的搜索功能吧: 首先我们需要写html的部分,我们需要设置几个条件,比如按什么来排序,按升序还是降序搜索,和一个文本框来设置模糊搜索: <nav> ...
- Spoken English Practice(Look, That cute guy is checking me out. come on, give me a break, he's just looking around.)
绿色:连读: 红色:略读: 蓝色:浊化: 橙色:弱读 下划线_为浊化 口语蜕变(2017/7/6) 英 ...
- Linux磁盘管理命令(fdisk,mount,umount,mkfs)
查看磁盘:fdisk -l 一块磁盘可以分14个分区 [root@wendyhost ~]# fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes 25 ...
- PHP中Trait详解及其应用
w PHP中Trait详解及其应用 - 开发者日常 - SegmentFaulthttps://segmentfault.com/a/1190000008009455
- oracle在drop表时要注意
在oracle中,比如 drop table STC_GHSLB; 系统同时自动删除的有这个表的主键.索引.trigger. 不能同时自动删除的有:sequence. 因为sequence不跟表关联, ...
- jmeter断言之BeanShell断言
1.添加BeanShell断言,在Script下面写断言脚本,常用的BeanShell脚本如下: if(!SampleResult.getResponseCode().equals("200 ...
- 一段能瞬间秒杀所有版本IE的简单HTML代码
许多人都非常讨厌InternetExplorer,在西方万圣节即将到来之际,让我们来看一个真正吓人的东西——如何用一段简单的HTML和CSS,将任何版本的IE搞死.我们只需要简单地打开任意文本编辑器, ...
- json的相关操作
最近对json的操作不是很理解 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c制定的j ...