当前位置:  软件>java软件

JdbcTemplateTool

    来源:    发布时间:2014-12-18

    本文导语:  Spring 出品的 JdbcTemplate 对于不想使用hibernate或者ibatis那样需要大量学习成本而且还想获得对象化的人来说是很好用的。但是 JdbcTemplate还是有很多不足之处或者说是缺点。比如你没法像hibernate那样直接传一个对象给它让他拆分成...

Spring 出品的 JdbcTemplate 对于不想使用hibernate或者ibatis那样需要大量学习成本而且还想获得对象化的人来说是很好用的。但是 JdbcTemplate还是有很多不足之处或者说是缺点。比如你没法像hibernate那样直接传一个对象给它让他拆分成sql并保存起来,当然这也是可以理解的,毕竟它并没有要求你去写 hbm.xml 文件所以无法知道你哪些字段要映射,哪些不要等等。又比如JdbcTemplate 可以帮忙把一个查询结果传化为一个对象列表,但是你需要查阅一些资料才知道要用 BeanPropertyRowMapper 。如果下次要用的时候又忘记了这个类,又要查一次或者翻以前的代码来看,其实完全可以提供一个方法直接传一个PO类进去自动创建BeanPropertyRowMapper 。基于以上的一些不足之处,我建立了 JdbcTemplateTool 它有以下特性:

  • 把查询结果转换为PO列表,不需要调用BeanPropertyRowMapper

  • 传一条统计sql比如 aselect count(1) from table可以直接返回一个数字作为结果,不需要自己实现中间步骤。

  • 可以直接把一个PO类存到数据库

  • 通过PO类和一个id可以获取到该对象

  • 通过PO类可以直接update数据库记录

  • 不需要实现 BatchPreparedStatementSetter, 就可以批量update

  • 通过一个对PO对象删除对应的数据库记录

  • 依然可以使用原始的JdbcTemplate

目前只在mysql上测试.

Maven 依赖
  org.crazycake
  jdbctemplatetool
  1.0.4-RELEASE
快速开始STEP 1. 创建一个maven项目

    创建一个maven项目叫testjtt. 添加jdbctemplatetool 依赖到pom.xml. 再添加以下依赖到 pom.xml.

  junit
  junit
  4.11
  test


    org.springframework
    spring-context
    3.2.2.RELEASE
    test


    com.mchange
    c3p0
    0.9.2.1
    test


    mysql
    mysql-connector-java
    5.1.19
    test


    org.springframework
    spring-test
    3.2.2.RELEASE
    test


最好使用 1.6+ jdk. 我并没有在 1.5 下测试

STEP 2. 创建测试数据库

    创建一个测试的数据库叫jtt_test创建一个用户travis不要分配密码. 赋予jtt_test的权限给travis.

CREATE USER 'travis'@'%' IDENTIFIED BY '';
GRANT ALL ON jtt_test.* TO 'travis'@'%';
flush privileges;

创建一张表employee插入一些测试数据.

DROP TABLE IF EXISTS `employee`;

CREATE TABLE `employee` (
  `id` int(11) NOT NULL,
  `name` varchar(300) NOT NULL,
  `join_date` datetime NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `employee` */

insert  into `employee`(`id`,`name`,`join_date`,`age`) values (1,'jack','2014-09-22 00:00:00',23),(2,'ted','2014-08-30 00:00:00',25),(3,'jim','2014-06-22 00:00:00',33);
STEP 3. 配置一下spring

    在test文件夹下创建resources文件夹. 添加resources到 source folder 修改输出为target/test-classes创建spring.xml在 test/resources 里面



    
        jdbc:mysql://localhost:3306/jtt_test?characterEncoding=utf8
        com.mysql.jdbc.Driver
        travis
        
    

       
            
    

    
        
    
STEP 4. 创建PO类

    创建Employee.java

import java.sql.Timestamp;
import javax.persistence.Id;

public class Employee {

    private Integer id;
    private String name;
    private Timestamp joinDate;
    private Integer age;

    @Id
    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 Timestamp getJoinDate() {
        return joinDate;
    }
    public void setJoinDate(Timestamp joinDate) {
        this.joinDate = joinDate;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
STEP 5. 创建测试用例

    创建HelloJTTTest.java

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.util.List;

import org.crazycake.jdbcTemplateTool.JdbcTemplateTool;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

@ContextConfiguration(locations={"classpath:spring.xml"})
public class HelloJTTTest extends AbstractJUnit4SpringContextTests{

    @Test
    public void testSave(){
        JdbcTemplateTool jtt = super.applicationContext.getBean("jdbcTemplateTool",JdbcTemplateTool.class);

        Employee e = new Employee();
        e.setId(4);
        e.setName("billy");
        Date now = new Date();
        e.setJoinDate(new Timestamp(now.getTime()));
        e.setAge(33);

        try {
            jtt.save(e);
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }
}
STEP 6. 启动!

    运行测试用例,等待绿色条。然后去数据库会看到多了一条记录 :

idnamejoin_dateage4billy2014-09-24 22:51:2033高级教程

    以下是各个方法的详细介绍

list

把查询结果转换为PO列表,不需要调用BeanPropertyRowMapper。 自动根据数据库的列将下划线转为驼峰命名规则映射类的属性.

@Test
public void testList(){
    JdbcTemplateTool jtt = super.applicationContext.getBean("jdbcTemplateTool",JdbcTemplateTool.class);
    List es = jtt.list("select * from employee where age 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3