Spring中的JDBCTemplate
src\dayday\JDBCTestTest
package dayday; import com.sun.org.apache.xalan.internal.xsltc.compiler.Template;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource; import javax.sql.DataSource; import java.sql.Connection;
import java.sql.SQLException;
import java.util.*; import static javafx.scene.input.KeyCode.S;
import static javafx.scene.input.KeyCode.T;
import static org.junit.Assert.*; /**
* Created by I am master on 2016/12/5.
*/
public class JDBCTestTest {
private ApplicationContext ctx=null;
private JdbcTemplate jdbcTemplate=null;
private UserDao userDao=null;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate=null;
{
ctx=new ClassPathXmlApplicationContext("beans.xml");
jdbcTemplate=ctx.getBean("template",JdbcTemplate.class);
userDao=ctx.getBean(UserDao.class);
namedParameterJdbcTemplate=ctx.getBean("namedParameterJdbcTemplate",NamedParameterJdbcTemplate.class);
} @Test
public void testDataSource() throws SQLException {
DataSource dataSource=ctx.getBean(DataSource.class);
System.out.println(dataSource.getConnection());
}
@Test
/*
数据库的增删改查操作
*/
public void testUpdate(){
String sql="update bankuser set password=? where name=? ";
jdbcTemplate.update(sql,"daydayup01","dayday");
}
/*
执行批量处理
*/
@Test
public void testbatchUpdate(){
String sql="insert into bankuser values(?,?,?)";
List<Object[]> batcharrays=new ArrayList<>();
batcharrays.add(new Object[]{"A","1","100"});
batcharrays.add(new Object[]{"B","2","200"});
batcharrays.add(new Object[]{"C","3","300"});
jdbcTemplate.batchUpdate(sql,batcharrays);
}
/*
*从数据库中读取一条记录,并实际返回一个对象
*注意不是调用 queryForObject(String sql, Class<Employee> requiredType, Object... args) 方法!
**/
@Test
public void testqueryForObject(){
String sql="select password , property from bankuser where name=?";
RowMapper<User>rowMapper=new BeanPropertyRowMapper<>(User.class);
User user=jdbcTemplate.queryForObject(sql,rowMapper,"dayday");
System.out.println(user);
}
/*
* 查到实体类的集合
*/
@Test
public void testqueryForList(){
String sql="select password , name from bankuser where property>?";
RowMapper<User> rowMapper=new BeanPropertyRowMapper<>(User.class);
List<User> users=jdbcTemplate.query(sql,rowMapper,200);
System.out.println(users); }
/*
* 查询单列的值,或做统计查询
* */
@Test
public void testqueryForObject1(){
String sql="select count(name) from bankuser";
long count=jdbcTemplate.queryForObject(sql,long.class);
System.out.println(count);
}
@Test
public void testUserDao(){
System.out.println(userDao.get("dayday"));
}
/*
* 测试JdbcTemplate的具名参数
* 好处:若有多个参数,则不用再去对应位置,直接对应参数名
* 坏处:较为麻烦*/
@Test
public void testNamedParameterJdbcTemplate(){
String sql="insert into bankuser value(:name,:password,:property)";
Map<String,Object> paramMap=new HashMap<>();
paramMap.put("name","DD");
paramMap.put("password","4");
paramMap.put("property","400");
namedParameterJdbcTemplate.update(sql,paramMap);
}
/*
* 使用具名参数时可以使用update(String sql,SqlParameterSource paramSource)方法进行更新操作
* 1.sql语句中的参数名和类的属性一致
* 2.使用SqlParameterSource的BeanPropertySqlParameterSource实现类作为参数
* */
@Test
public void testNamedParameterJdbcTemplate2(){
String sql="insert into bankuser value(:name,:password,:property)";
User user=new User();
user.setName("E");
user.setPassword("5");
user.setProperty("500");
SqlParameterSource sqlParameterSource=new BeanPropertySqlParameterSource(user);
namedParameterJdbcTemplate.update(sql,sqlParameterSource);
}
}
src\dayday\UserDAO.java
src\dayday\User.java
package dayday; /**
* Created by I am master on 2016/12/5.
*/
public class User {
private String name;
private String password;
private String property;
public void setName(String name){
this.name=name;
}
public void setPassword(String password){
this.password=password;
}
public void setProperty(String property){
this.property=property;
}
public String getName(){
return name;
}
public String getPassword(){
return password;
}
public String getProperty(){
return property;
}
public String toString(){
return "[ name="+name+" password="+password+" property="+property+"]";
}
}
src\jdbc.property
jdbc.user=root
jdbc.password=root
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/bank
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.initPoolSize=5
jdbc.maxPoolSize=10
src\beans.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"
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">
<!--导入资源文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置c3p0数据源-->
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
<!--配置Spring中的jdbcTemplate-->
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="datasource"></property>
</bean>
<context:component-scan base-package="dayday"></context:component-scan>
<!--配置NamedParameterJdbcTemplate,该对象可以使用具名参数,其无无参构造器,所以必须为其构造器指定参数-->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="datasource"></constructor-arg>
</bean>
</beans>
Spring中的JDBCTemplate的更多相关文章
- (六)Spring 中的 JdbcTemplate
目录 概念 配置数据库 创建 JdbcTemplate 对象 增删改查代码 概念 JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 : 使用起来和 Dbutuis ...
- Spring中的JdbcTemplate使用
1.引出SpringJDBC的概念 在学习JDBC编程时我们会感觉到JDBC的操作是多么繁琐,那么当我们学习的Hibernate框架时,我们感觉到数据库的操作也变非常简单,提高了开发效率.但是当使用H ...
- Spring中的JdbcTemplate的使用
一.jdbcTemplate的作用 它就是用于和数据库交互的,实现对表的crud.与dbutils相似 二.JdbcTemplate的使用 <dependency> <groupId ...
- Spring 中的 JDBCTemplate
新建一个java工程 写好spring配置文件,直接上代码 <?xml version="1.0" encoding="UTF-8"?> <b ...
- Spring中的设计模式学习
Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. ...
- Spring中的设计模式
[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用] [http://www.geek521.c ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- Spring中使用的设计模式
目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式 S ...
- 详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设 ...
随机推荐
- 基础算法之冒泡排序Bubble Sort
原理 将相邻的数据两两进行比较,按照从小到大或者从大到小的顺序进行位置交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后从头开始再次进行两两比较交换,直到倒数第二位时结束.按照此规则,若干 ...
- WPF:指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效的解决方法
文/嶽永鹏 WPF 数据绑定中绑定到ENTITY,如果把数据文件做成一个类库,在UI文件中去应用它,可能遇到下面这种情况. 指定的命名连接在配置中找不到.非计划用于 EntityClient 提供程序 ...
- Post提交
以下两种Post提交方法都可行 /// <summary> /// post 数据 /// </summary> /// <param name="url&qu ...
- mysql 存储 emoji报错( Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
1.报错原因: mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节. 2.解决办法: 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cn ...
- MySql 获取当前节点及递归所有上级节点
-- MySql 获取当前节点及递归所有上级节点 -- 参数说明:resultField:查询返回字段,idd 要查询的资源ID值,idFieldName ID字段名,parentIdFieldNam ...
- ORACLE 误删除视图恢复
1.使用 dba_views 回退到特定时间段,查看定义 select view_name,text from (select * From dba_views AS OF TIMESTAMP(SYS ...
- LeetCode 6 ZigZag Conversion 模拟 难度:0
https://leetcode.com/problems/zigzag-conversion/ The string "PAYPALISHIRING" is written in ...
- Bootstrap <基础二十二>超大屏幕(Jumbotron)
Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...
- js生成[n,m]的随机数 以及实际运用
Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ 1.0 之间的一 ...
- VS一次删除多个窗体后报错
今天在做项目的时候,需要删除多个窗体,删除了之后,VS报了个错误: 命名空间“项目名称”中不存在类型或命名空间名称“文件夹”(是否缺少程序集引用?) 具体原因不清楚,就算恢复窗体后还是一样的错误,无法 ...