spring4-4-jdbc-01

1.建立数据属性文件db.properties

jdbc.user=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/spring-1?characterEncoding=UTF-8

jdbc.initialPoolSize=5
jdbc.maxPoolSize=10

2.建立配置文件

  添加命名空间context,beans.

 2.1 读入数据属性文件

    <!-- 1.导入资源文件 -->
    <context:property-placeholder location="classpath:db.properties"/>

 2.2 配置C3P0数据源:

    <!-- 2.配置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="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>

2.3 配置JdbcTemplate bean:

    <!-- 3.配置 jdbc template -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

3.应用

3.1加载Sping IOC容器

    private ApplicationContext ctx = null;
    private JdbcTemplate jdbcTemplate;
    @Before
    public void init(){
        ctx = new ClassPathXmlApplicationContext("applicationContext-jdbc.xml");
        jdbcTemplate = ctx.getBean("jdbcTemplate",JdbcTemplate.class);
    }
    @Test
    public void testJdbc() throws SQLException {
        DataSource dataSource = ctx.getBean("dataSource",DataSource.class);
        System.out.println(dataSource.getConnection());
    }

3.2测试连接:

        DataSource dataSource = ctx.getBean("dataSource",DataSource.class);
        System.out.println(dataSource.getConnection());

3.3 测试插入,更新,删除

        //insert
        String insertSql = "insert employees(name,email,dept_id) values(?,?,?)";
        jdbcTemplate.update(insertSql, "张三","[email protected]","3");

        //update
        String updateSql = "update employees set name= ?  where id = ?";
        jdbcTemplate.update(updateSql, "张四","1");

        //delete
        String deleteSql = "delete from  employees where id=?";
        jdbcTemplate.update(deleteSql, "1");

3.4 批处理 插入,修改,删除

    //insert
        String insertSql = "insert employees(name,email,dept_id) values(?,?,?)";
        List<Object[]> batchArgs = new ArrayList<Object[]>();
        batchArgs.add(new Object[]{"张三","[email protected]","1"});
        batchArgs.add(new Object[]{"李四","[email protected]","2"});
        batchArgs.add(new Object[]{"王五","[email protected]","3"});
        batchArgs.add(new Object[]{"钱六","[email protected]","4"});
        jdbcTemplate.batchUpdate(insertSql, batchArgs);

        // update
        String updateSql = "update employees set email=? where id=?";
        batchArgs.clear();
        batchArgs.add(new Object[]{"[email protected]","1"});
        batchArgs.add(new Object[]{"[email protected]","2"});
        batchArgs.add(new Object[]{"[email protected]","3"});
        batchArgs.add(new Object[]{"[email protected]","4"});
        jdbcTemplate.batchUpdate(updateSql, batchArgs);

        // delete
        String deleteSql = "delete from employees  where id = ?";
        batchArgs.clear();
        batchArgs.add(new Object[]{"1"});
        batchArgs.add(new Object[]{"2"});
        batchArgs.add(new Object[]{"3"});
        batchArgs.add(new Object[]{"4"});
        jdbcTemplate.batchUpdate(deleteSql, batchArgs);

4. 查询一行,返回对象

/**
     * 从数据库中获取一条记录, 实际得到对应的一个对象
     * 注意不是调用 queryForObject(String sql, Class<Employee> requiredType, Object... args) 方法!
     * 而需要调用 queryForObject(String sql, RowMapper<Employee> rowMapper, Object... args)
     * 1. 其中的 RowMapper 指定如何去映射结果集的行, 常用的实现类为 BeanPropertyRowMapper
     * 2. 使用 SQL 中列的别名完成列名和类的属性名的映射. 例如 last_name lastName
     * 3. 不支持级联属性. JdbcTemplate 到底是一个 JDBC 的小工具, 而不是 ORM 框架
     */
    @Test
    public void testQueryForObject(){
        String sql = "SELECT id, last_name lastName, email, dept_id as \"department.id\" FROM employees WHERE id = ?";
        RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);
        Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 1);

        System.out.println(employee);
    }

5.查询类的集合

/**
     * 查到实体类的集合
     * 注意调用的不是 queryForList 方法
     */
    @Test
    public void testQueryForList(){
        String sql = "SELECT id, last_name lastName, email FROM employees WHERE id > ?";
        RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);
        List<Employee> employees = jdbcTemplate.query(sql, rowMapper,5);

        System.out.println(employees);
    }

6.查询单列值

/**
     * 获取单个列的值, 或做统计查询
     * 使用 queryForObject(String sql, Class<Long> requiredType)
     */
    @Test
    public void testQueryForObject2(){
        String sql = "SELECT count(id) FROM employees";
        long count = jdbcTemplate.queryForObject(sql, Long.class);

        System.out.println(count);
    }
时间: 2024-12-09 13:51:56

spring4-4-jdbc-01的相关文章

Spring4:JDBC

http://www.cnblogs.com/xrq730/p/4922136.html 数据库连接池 对一个简单的数据库应用,由于对数据库的访问不是很频繁,这时可以简单地在需要访 问数据库时,就新创建一个连接,就完后就关闭它,这样做也不会带来什么性能上的开销.但是对于一个复杂的数据库应用,情况就完全不同而,频繁的建立.关闭 连接,会极大地减低系统的性能,因为对于连接的使用成了系统性能的瓶颈. 通过建立一个数据库连接池以及一套连接使用管理策略,可以达到连接复用的效果,使得一个数据库连接可以得到安

JDBC—01—JDBC简介;JDBC常用接口与类;

一. JDBC 简介 1 什么是 JDBC JDBC(Java DataBase Connectivity)java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据,执行 SQL 语句的标准(标准即是接口:) 可以为多种关系数据库提供统一访问 2 什么是数据库驱动程序 数据库厂商对 JDBC 规范的具体实现,是接口的实现类: 不同数据产品的数据库驱动名字有差异 在程序中需要依赖数据库驱动来完成对数据库的操作 3 程序操作数据库流程 定义了在 Java 语言中连

我喜欢减肥我们来减肥吧

http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313278016/2015.01.28.html http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313282016/2015.01.28.html http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313289016/2015.01.28.html http://www.ebay.com/cln/usli

百度回家看沙发沙发是减肥了卡斯加积分卡拉是减肥

http://www.ebay.com/cln/hpryu-caw8ke/cars/158056866019/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/158445650015/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/158445674015/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/1584456790

巢哑偕倥乇椭煞谙暗逞帕俸

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

我国第三代移动通信研究开发进展-尤肖虎200106

众所周知,数据科学是这几年才火起来的概念,而应运而生的数据科学家(data scientist)明显缺乏清晰的录取标准和工作内容.此次课程以<星际争霸II>回放文件分析为例,集中在IBM Cloud相关数据分析服务的应用.面对星际游戏爱好者希望提升技能的要求,我们使用IBM Data Science Experience中的jJupyter Notebooks来实现数据的可视化以及对数据进行深度分析,并最终存储到IBM Cloudant中.这是个介绍+动手实践的教程,参会者不仅将和讲师一起在线

pl/sql学习1——标量变量psahnh6S

为类型.不能用于表列的数据类型.范围为的子类型.自然数.为的子类型.具有约束为单精度浮点数.为变量赋值时.后面要加为双精度浮点数.为变量赋值时.后面要加.为数字总位数.为小数位数是的子类型.最大精度位是的子类型.最大精度位单精度浮点型是的子类型.最大精度位双精度浮点型定义精度为位的实数..定义为位的整数.变长字符串.最长测试变量数据!.定长字符串.最长测试变长二进制字符串物理存储的为类型...固定长度.个字节使用定义数据类型那个最小值:最大值:最小值:最大值:最小值:最大值:最小值:最大值:最小

【SSH项目实战01】整合Struts2、Hibernate4.3和Spring4.2

今天开始,跟进一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总结一下如何整合Struts2.Hibernate4.3和Spring4.2. 整合三大框架得先从搭建各部分环境开始,也就是说首先得把Spring,Hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合.这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境--> 整合Spring和Hibernate --> 搭建Struts2环境 --> 整合Sp

Spring4.3.1 JDBC笔记

个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5679354.html 基于Spring4.3.1官方文档总结,官方文档链接http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#jdbc Spring JDBC能干什么,如下图所示,可见,其目的还是“简化开发”,把通用的业务无关的操作都在框架中做了. 先思考一下使用JDBC操作数据库需要解决哪些

Java 使用 JDBC 连接数据库的代码整合[MySql、SqlServer、Oracle]-[经过设计模式改造](2020年寒假小目标01)

2020.01.08 博客期:121 星期三 今天对过去整个大二和大三用到的数据库的方法进行汇总,可以有效的使用.套用,每一个部分都有<软件设计模式>知识,上述代码满足了开闭原则,如果要使用此代码,只需添加数据类继承已经写好的类就可以了,无需修改. 开发项目中,项目整体结构:    [小编网不好,图传不上去,到时候,补上] 类图: [小编网不好,图传不上去,到时候,补上] 源码: com.dblink.basic.sqlkind 包: 1 package com.dblink.basic.sq