src\dayday\JDBCTestTest

  1. package dayday;
  2.  
  3. 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;
  4.  
  5. import javax.sql.DataSource;
  6.  
  7. import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.*;
  8.  
  9. import static javafx.scene.input.KeyCode.S;
    import static javafx.scene.input.KeyCode.T;
    import static org.junit.Assert.*;
  10.  
  11. /**
    * 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);
    }
  12.  
  13. @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);
  14.  
  15. }
    /*
    * 查询单列的值,或做统计查询
    * */
    @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

  1. package dayday;
  2.  
  3. /**
    * 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

  1. jdbc.user=root
    jdbc.password=root
    jdbc.jdbcUrl=jdbc:mysql://localhost:3306/bank
    jdbc.driverClass=com.mysql.jdbc.Driver
  2.  
  3. jdbc.initPoolSize=5
    jdbc.maxPoolSize=10

src\beans.xml

  1. <?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的更多相关文章

  1. (六)Spring 中的 JdbcTemplate

    目录 概念 配置数据库 创建 JdbcTemplate 对象 增删改查代码 概念 JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 : 使用起来和 Dbutuis ...

  2. Spring中的JdbcTemplate使用

    1.引出SpringJDBC的概念 在学习JDBC编程时我们会感觉到JDBC的操作是多么繁琐,那么当我们学习的Hibernate框架时,我们感觉到数据库的操作也变非常简单,提高了开发效率.但是当使用H ...

  3. Spring中的JdbcTemplate的使用

    一.jdbcTemplate的作用 它就是用于和数据库交互的,实现对表的crud.与dbutils相似 二.JdbcTemplate的使用 <dependency> <groupId ...

  4. Spring 中的 JDBCTemplate

    新建一个java工程 写好spring配置文件,直接上代码 <?xml version="1.0" encoding="UTF-8"?> <b ...

  5. Spring中的设计模式学习

    Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. ...

  6. Spring中的设计模式

    [Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用]    [http://www.geek521.c ...

  7. spring 中的设计模式

    https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...

  8. Spring中使用的设计模式

    目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式   S ...

  9. 详解设计模式在Spring中的应用

    设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设 ...

随机推荐

  1. Python之路 day2 集合的基本操作

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa ''' #集合是无序的 集合的关系测试, 增加,删除,查找等操作 ''' #列表去重 ...

  2. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  3. java中参数传递方式

    在 Java 应用程序中永远不会传递对象,而只传递对象引用.因此是按引用传递对象.Java应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数.参数可以是对象引用,而 Java ...

  4. Migrating an ASP.NET MVC application to ADFS authentication

    I recently built an ASP.NET application at work to help track internal use of our products. It's bee ...

  5. 【自动化学习笔记】_环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    目录 第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下 ...

  6. docker --命令

    1.开启服务 sudo docker start 服务名 2.预览列出所有的容器 sudo docker ps -a 3.进入文件 cd 4.预览文件目录 ls 5.预览文件内容 more 6.拷贝文 ...

  7. SQL SERVER 2008

    sql server 2008 r2 下载安装教程 sql server 2008 是微软公司开发的一套数据库管理系统.是目前大型数据库中常用数据库之一.性能稳定,功能强大,是面向中大型企业的一款数据 ...

  8. js面向对象的封装方法,【案例】

    封装方法: /** * @矩形canvas库 * @authors Shimily (275766400@qq.com) * @date 2016-12-28 10:30:51 * @version ...

  9. swift-分支语句

    // switch的基本用法 // 1>switch后面的()可以省略 // 2>case中语句结束后不需要跟break // 3>在case中定义局部变量不需要跟{} // 4&g ...

  10. I/O

    IO流:1:字节流(inputStream:输入流)(outputStream:输出流).2:字符流(reader:输入流)(winter:输出流). 首先判断是输入还是输出(站在计算机的立场):其次 ...