springboot+jpa 的自動查詢的簡單封裝

jacob-dan

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

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

simple springboot+jpagithub

  • 要求實體類繼承jacob.dan.base.beanBaseEntity,根據《阿里巴巴Java開發手冊》,

3、MySQL規約 【強制】表必備三字段:id, gmt_create, gmt_modified。 說明:其中id必爲主鍵,類型爲unsigned bigint、單表時自增、步長爲1。gmt_create, gmt_modified的類型均爲date_time類型。spring

BaseEntity中id爲String類型,由SnowflakeIdFactory產生,除了上述字段,還增長了is_deleted字段做爲刪除標識springboot

  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[]) 能夠生成指定包、類、目標類型的代碼文件,參見對象中的方法this

    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.net

  2. 測試封裝好的查詢方法code

    測試示例中注入的 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()));
     	}
     }

歡迎討論分享

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

  • 勒烏本
  • 西默盎
  • 肋未
  • 猶大
  • 納裴塔裏
  • 加得
  • 阿協爾
  • 依撒加爾
  • 則步隆
  • 若瑟
  • 本雅明
相關文章
相關標籤/搜索