文档章节

springboot+jpa 的自动查询的简单封装

烛✟孩
 烛✟孩
发布于 02/26 13:55
字数 553
阅读 45
收藏 1

jacob-dan

GitHub: https://github.com/PaulusChang/jacob-dan

Gitee: https://gitee.com/paulusgit/jacob-dan

simple springboot+jpa

  • 要求实体类继承jacob.dan.base.beanBaseEntity,根据《阿里巴巴Java开发手册》,

三、MySQL规约 【强制】表必备三字段:id, gmt_create, gmt_modified。 说明:其中id必为主键,类型为unsigned bigint、单表时自增、步长为1。gmt_create, gmt_modified的类型均为date_time类型。

BaseEntity中id为String类型,由SnowflakeIdFactory产生,除了上述字段,还增加了is_deleted字段作为删除标识

  1. 创建实体类,并调用方法生成相应的 service/repository 代码,以 jacob.dan.user.entity.UserRole 为例

    在 jacob.dan.user.entity 包下添加 UserRole.java

     package jacob.dan.user.entity;
    
     import javax.persistence.Entity;
     import javax.persistence.ManyToOne;
     import javax.persistence.Table;
    
     import jacob.dan.base.bean.BaseEntity;
    
     [@Entity](https://my.oschina.net/u/1260961)
     @Table(name = "dan_user_row")
     public class UserRole extends BaseEntity {
    
     	@ManyToOne
     	private User user;
     	@ManyToOne
     	private Role role;
    
     	public User getUser() {
     		return user;
     	}
     	public void setUser(User user) {
     		this.user = user;
     	}
     	public Role getRole() {
     		return role;
     	}
     	public void setRole(Role role) {
     		this.role = role;
     	}
    
     }
    

    代码生成工具 jacob.dan.generator.code.Generator.main(String[]) 可以生成指定包、类、目标类型的代码文件,参见对象中的方法

     generate(Category, Class<?>)
     generate(CategoryList, Class<?>)
     generate(Category, Package)
     generate(CategoryList, Package)
    

    代码地址:https://github.com/PaulusChang/jacob-dan/blob/master/src/test/java/jacob/dan/test/GenerateDataTest.java

  2. 测试封装好的查询方法

    测试示例中注入的 UserService 是自动生成的,继承了 BaseService。完事测试代码参见 https://github.com/PaulusChang/jacob-dan/blob/master/src/test/java/jacob/dan/test/QueryTest.java, 简单的调用示例如下

     /**
      * 测试排序
      * [@author](https://my.oschina.net/arthor) ChangJian
      * @date 2019年2月26日
      */
     @Test
     public void testSort() {
     	User user = new User();
     	//birthday desc
     	user.setOrderBean(new OrderBean(Direction.DESC, "birthday"));
     	List<User> users = userService.findAll(user);
     	assertThat(users.size(), Matchers.greaterThan(0));
     	for (int i = 1; i < users.size(); i++) {
     		assertThat(users.get(i - 1).getBirthday(), Matchers.greaterThanOrEqualTo(users.get(i).getBirthday()));
     	}
     }
    
     /**
      * 测试普通的约束
      * @author ChangJian
      * @date 2019年2月25日
      */
     @Test
     public void testNormal() {
     	User user = new User();
     	int age = 22;
     	user.setAge(age);
     	List<User> users = userService.findAll(user);
     	assertThat(users.size(), Matchers.greaterThan(0));
     	for (User user2 : users) {
     		assertThat(user2.getAge(), equalTo(age));
     	}
     }
    
     @Test
     public void testArray() {
     	User user = new User();
     	Integer[] ageArray = new Integer[] {22, 23, 25};
     	List<Integer> ageList = Arrays.asList(ageArray);
    
     	user.setAgeArray(ageArray);
    
     	List<User> users = userService.findAll(user);
     	assertThat(users.size(), Matchers.greaterThan(0));
     	for (User user2 : users) {
     		Assert.assertTrue(ageList.contains(user2.getAge()));
     	}
     }
    

欢迎讨论分享

取名:圣祖雅各伯第五子,丹

  • 勒乌本
  • 西默盎
  • 肋未
  • 犹大
  • 纳裴塔里
  • 加得
  • 阿协尔
  • 依撒加尔
  • 则步隆
  • 若瑟
  • 本雅明

© 著作权归作者所有

烛✟孩

烛✟孩

粉丝 3
博文 51
码字总数 16969
作品 0
程序员
私信 提问
Java ORM 框架 - QuickDAO

QuickDAO QuickDAO 是一款简单,易用,轻量级的java ORM框架.目前支持 Mysql, SQlite 以及 H2 数据库. SpringBoot环境下由于类加载器问题请慎用,可能会导致未知问题出现! QuickDAO目前没有在高...

648823596
05/30
638
0
开源持久化框架--muppet ORM

muppet ORM 是使用 Java 语言开发的,对 jdbc 进行封装,实现简单对象关系映射的持久化框架。 目前实现 insert,update,delete 及查询结果集映射 Map,List,Object,基于JavaBean 注解生成...

yuhaiqiang_123
2017/04/05
448
0
基于 spring boot 和 spring mvc 的快速开发框架--summer-boot

此项目目的在于提供一个简化、简洁、迅速的开发架构。 它是基于spring boot和spring mvc高度封装的快速开发框架,数据库操作工具summerDao是基于jdbcTemplate高度封装简化、拥有超级简单实用...

xiwa
2017/04/25
5.9K
4
基于 Spring JDBC 的轻量级 ORM 框架--sborm

一、SBORM 介绍 1、目前只考虑支持 mysql; 2、基于spring jdbc的上层封装,底层jdbc操作基于JdbcTemplate,对于使用spring jdbc的人会有一点价值,比较简洁的封装可以节省很多重复劳动,具体...

franticwind
2015/03/30
2.6K
0
基于 SpringBoot 封装的基础库 - yue-library

yue-library,一个基于 SpringBoot 封装的基础库 介绍 yue-library 是一个基于 SpringBoot 封装的基础库,内置丰富的 JDK 工具,并且自动装配了一系列的基础 Bean,不仅如此,还可以用于快速...

yl-yue
07/18
2.2K
4

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu 18.04搭建ngrok内网穿透服务

从公网访问内网部署的服务。大概步骤也比较简单(6步): 在阿里云控制台,开放需要的端口; 阿里云控制台域名解析到服务器IP上; 在公网主机上(我用的阿里云)部署ngrok源码; 生成证书; ...

雨中伊
59分钟前
4
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
6
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
14
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
2.6K
24
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
45
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部