开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
simple-jdbc-templete首页、文档和下载 - 基于 Spring jdbcTemplete 的 ORM 工具 - 开源中国社区
全部项目分类
GPL
Java
跨平台
shifeng1983
分享
收藏
10 人收藏
收录时间:2017-09-01
simple-jdbc-templete 详细介绍

这是一个简单的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()));
    }
    
}
simple-jdbc-templete

选择将代码托管在码云
你还在等什么

可能是中国最大最好的代码托管平台


大家对 simple-jdbc-templete 的评论 (全部 3 条评论)
{{repayCom.userName}}
一醉为红尘
这个大哥真叼
詹姆斯Lee
大哥牛的一比啊
顶部