基于 Spring jdbcTemplete 的 ORM 工具 simple-jdbc-templete

GPL
Java
跨平台
2017-09-01
shifeng1983

这是一个简单的ORM工具,基于Spring jdbcTemplete,可以方便的根据对象生成相应的CRUD SQL语句。结合springmvc使用可以大量的减少代码量。

先看例子,比如springmvc接收到了一个User对象,里面包含name,startCreateTime,endCreateTime等查询参数

@Transient//javax.persistence注解,用于标识这个字段没有对应的数据库字段
@Operator(targetColumn="create_time",value=" >= ")//这个用于生成查询条件
public Timestamp getStartCreateTime() {
	return startCreateTime;
}

@Transient
@Operator(targetColumn="create_time",value=" <= ")
public Timestamp getEndCreateTime() {
	return endCreateTime;
}

@OrderBy(value="desc")//javax.persistence注解,用于标识这个字段会被用于生成order by语句
public Timestamp getCreateTime() {
	return createTime;
}

只要执行jtt.list(user, 0, 10);这句,就会生成下面这条语句 [sql=select * from t_user where 1=1 and create_time >= ? and create_time <= ? ORDER BY create_time desc limit 0,10, params=[2017-09-01 12:32:08.842, 2017-09-01 12:32:10.034]]

这样基本上就能做到不写任何查询的代码,80%的情况只需要把springmvc接收的对象直接传给simple-jdbc-templete,就能查询出结果。 更多的例子请看unit test代码

@Test
public void save() throws Exception{
    for (int i = 0; i < 10; i++) {
        User u = new User();
        u.setLogin("user"+i);
        u.setName("user"+i);
        u.setStatus(Byte.parseByte("1"));
        jtt.save(u);
    }

}

@Test
public void saveWithID() throws Exception{
    User maxUser = jtt.get("select max(id) id from t_user", null, User.class);
    for (long i = maxUser.getId()+1; i < maxUser.getId()+10; i++) {
        User u = new User();
        u.setId(i);
        u.setLogin("user"+i);
        u.setName("user"+i);
        u.setStatus(Byte.parseByte("1"));
        jtt.save(u);
    }

}

@Test
public void saveGetId() throws Exception{
    for (int i = 0; i < 10; i++) {
        User u = new User();
        u.setLogin("user"+i);
        u.setName("user"+i);
        u.setStatus(Byte.parseByte("1"));
        jtt.save(u,true);
        logger.debug(String.valueOf(u.getId()));
    }

}

@Test
public void update() throws Exception{
    User u = new User();
    u.setId(3L);
    u.setLogin("ssss");
    jtt.update(u);
}    

@Test
public void delete() throws Exception{
    User u = new User();
    u.setId(3L);
    jtt.delete(u);
}

@Test
public void list() throws Exception{
    User u = new User();
    u.setLogin("user");
    List<User> list = jtt.list(u,10,20,"id","desc",false);
    for (User user : list) {
        logger.debug(String.valueOf(user.getId()));
    }
}

@Test
public void listWithObject() throws Exception{
    User u = new User();
    u.setLogin("admin");
    List<User> list = jtt.list(u);
    jtt.setListFromObject(list);
    for (User user : list) {
        for (Role r : user.getRoles()) {
            logger.debug(r.getName());
        }
    }
}

@Test
public void get() throws Exception{
    User u1 = jtt.get(User.class, 1L);
    logger.debug(u1.getLogin());
    User u2 = jtt.get("select * from t_user where id = ?", new Object[]{2L}, User.class);
    logger.debug(u2.getLogin());
}

@Test
public void count() throws Exception{
    User u = new User();
    u.setLogin("user1");
    logger.debug(String.valueOf(jtt.count(u)));
    long count = jtt.count("select count(1) from t_user where login like ?", new Object[]{"%user1%"});
    logger.debug(String.valueOf(count));
}

@Test
public void testAll() throws Exception {
    for (int i = 0; i < 100; i++) {
        jtt.execute("delete from t_user", null);
        jtt.execute("delete from t_user_role", null);
        Date start = new Date();
        for (int j = 0; j < 1000; j++) {
            User u = new User();
            long currDate = new Date().getTime();
            u.setLogin(String.valueOf(currDate));
            u.setName(String.valueOf(currDate));
            u.setCreatedById(1L);
            u.setCreateTime(new Timestamp(currDate));
            u.setStatus(Byte.parseByte("1"));
            jtt.save(u, true);

            UserRole ur1 = new UserRole();
            ur1.setRoleId(1L);
            ur1.setUserId(u.getId());
            jtt.save(ur1);
            UserRole ur2 = new UserRole();
            ur2.setRoleId(2L);
            ur2.setUserId(u.getId());
            jtt.save(ur2);

            User updateUser = jtt.get(User.class, u.getId());
            updateUser.setUpdateTime(new Timestamp(new Date().getTime()));
            updateUser.setModifiedById(2L);
            jtt.update(updateUser);

            User listUser = new User();
            listUser.setStartCreateTime(new Timestamp(currDate - 1000));
            listUser.setEndCreateTime(new Timestamp(new Date().getTime()));
            jtt.list(listUser, 0, 10, true);
            jtt.list(listUser, 0, 10, "create_time", "desc", false);
            jtt.list("select * from t_user where 1=1  and create_time  >=  ?  and create_time  <=  ?  ORDER BY create_time desc limit 0,10",
                    new Object[] { new Timestamp(currDate - 1000), new Timestamp(currDate) }, User.class);

            jtt.count("select count(1) from t_user where create_time  >=  ?  and create_time  <=  ? limit 0,10",
                    new Object[] { new Timestamp(currDate - 1000), new Timestamp(currDate) });
        }

        User maxUser = jtt.get("select max(id) id from t_user", null, User.class);
        jtt.delete(maxUser);
        Date end = new Date();
        System.out.println("use time:" + (end.getTime() - start.getTime()));
    }
    
}
的码云指数为
超过 的项目
加载中

评论(3)

是谁卑微了虚伪的承诺
牛逼哄哄
一醉为红尘
一醉为红尘
这个大哥真叼
詹姆斯Lee
大哥牛的一比啊

暂无资讯

暂无问答

Oracle Jdbc Version Compatibility

oracle11.2官方文档:http://docs.oracle.com/cd/E11882_01/java.112/e16548/getsta.htm#JJDBC28049 oracle11.1官方文档: http://docs.oracle.com/cd/B28359_01/java.111/b31224/getsta.htm...

2015/04/28 15:31
21
0
Apache DBCP Tutorial Example for Oracle,MySQL

JDBC DataSource Example – Oracle, MySQL and Apache DBCP Tutorial

2014/11/25 08:42
12
0
Groovy Scripts and Classes

Classes are defined in Groovy similarly to Java. Methods can be class (static) or instance based and can be public, protected, private and support all the usual Java modifiers l...

2013/07/04 15:26
43
0
游戏开发--开源19---loon-simple|Java Classic RPG|Craft...

loon-simple是loon-game Java2D游戏开发包的应用及Java游戏开发教程集合,每一项实例都有与之相对应的讲解文章,如果您工作之余也想以Java开发些小游戏,那么loon-simple是您不可多得的好帮手...

2013/11/05 14:14
69
0
A Review of 5 Java JSON Libraries

原文: http://www.rojotek.com/blog/2009/05/07/a-review-of-5-java-json-libraries/#comments json-simple的例子: http://www.mkyong.com/java/json-simple-example-read-and-write-json...

2014/12/09 21:38
13
0
JavaEE 7技术一览

JavaEE 体系结构非常膨大,从javaEE 5到现在的javaEE 7,新特性层出不穷。如果把一些偏门技术算进去,如一些基于JVM平台的Grails、Scala,主流SSH框架,谷歌的GWT,BPM工作流的JBPM、Activit...

2014/10/18 12:35
2.9K
0
JAIN API 规范所包含的API

Java Application Interfaces for Communications: Java Application Containers for Communications: JAIN SIP 1.1 JAIN Service Logic Execution Environment (JSLEE) 1.0 SIP API for J2M...

2015/03/03 11:05
23
0
安装java memcached client到maven repository

由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository。java memcached client的jar包下载地址:https://github.com/gwhalin/Me...

2015/05/23 21:01
175
0
Java | enum 枚举类

simple 我们以用户状态写一个枚举类 package com.fengwenyi.learn.java.javaenum; /** * @author Wenyi Feng */ public enum UserStatus { // 登入 LOGIN, // 登出 LOGOUT } 测试类 ......

2018/06/24 19:43
4
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部