其他分享
首页 > 其他分享> > Service CRUD

Service CRUD

作者:互联网

一、保存数据

1.保存单个实体到数据库

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         UserBean entity = new UserBean();
 7         entity.setUserId(9999);
 8         entity.setName("save-" + System.currentTimeMillis());
 9         entity.setSex("男");
10         entity.setAge(40);
11         entity.setBorthday(new Date());
12         boolean flag = userService.save(entity);
13         System.out.println("flag=" + flag);
14     }

 

2.一次保存多个实体到数据库

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         List<UserBean> userBeanList = new ArrayList<>();
 7         userBeanList.add(new UserBean(9991, "name-9991", "女", 20));
 8         userBeanList.add(new UserBean(9992, "name-9992", "男", 30));
 9         userBeanList.add(new UserBean(9993, "name-9993", "男", 40));
10         boolean flag = userService.saveBatch(userBeanList);
11         System.out.println("flag=" + flag);
12     }

 

3.批量保存,将数据分成多个批次,每个批次数量为2

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         List<UserBean> userBeanList = new ArrayList<>();
 7         userBeanList.add(new UserBean(9994, "name-9994", "女", 20));
 8         userBeanList.add(new UserBean(9995, "name-9995", "男", 30));
 9         userBeanList.add(new UserBean(9996, "name-9996", "女", 32));
10         userBeanList.add(new UserBean(9997, "name-9997", "女", 29));
11         userBeanList.add(new UserBean(9998, "name-9998", "男", 33));
12         boolean flag = userService.saveBatch(userBeanList, 2);
13         System.out.println("flag=" + flag);
14     }

 

二、保存或更新数据

1.更新或新增单个实体

1     @Autowired
2     private UserService userService;
3  
4     @Test
5     void contextLoads() {
6         UserBean entity = new UserBean(9991, "name-update", "男", 40);
7         boolean flag = userService.saveOrUpdate(entity);
8         System.out.println("flag=" + flag);
9     }

 

saveOrUpdate(T entity) 方法的实现代码如下:

 1 /**
 2  * TableId 注解存在更新记录,否插入一条记录
 3  *
 4  * @param entity 实体对象
 5  * @return boolean
 6  */
 7 @Transactional(rollbackFor = Exception.class)
 8 @Override
 9 public boolean saveOrUpdate(T entity) {
10     if (null != entity) {
11         TableInfo tableInfo = TableInfoHelper.getTableInfo(this.entityClass);
12         Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
13         String keyProperty = tableInfo.getKeyProperty();
14         Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
15         Object idVal = ReflectionKit.getFieldValue(entity, tableInfo.getKeyProperty());
16         return StringUtils.checkValNull(idVal) || Objects.isNull(getById((Serializable) idVal)) ? save(entity) : updateById(entity);
17     }
18     return false;
19 }

判断实体 @TableId 注解修饰的 ID 字段记录是否存在。如果不存在,则执行 save 方法,保存数据;

如果存在,则执行 update 方法,更新数据。

 

2.根据 Wrapper 查询对象批量更新数据

 1 @Test
 2 void contextLoads() {
 3     UserBean entity = new UserBean();
 4     entity.setName("name-update");
 5  
 6     UpdateWrapper<UserBean> wrapper = new UpdateWrapper<>();
 7     wrapper.gt("user_id", 9992);
 8     wrapper.le("user_id", 9999);
 9  
10     boolean flag = userService.saveOrUpdate(entity, wrapper);
11     System.out.println("flag=" + flag);
12 }

 

3.批量插入或更新数据

1 @Test
2 void contextLoads() {
3     List<UserBean> userBeanList = new ArrayList<>();
4     userBeanList.add(new UserBean(9992, "username-update"));
5     userBeanList.add(new UserBean(9993, "username-update"));
6     userBeanList.add(new UserBean(9994, "username-update"));
7     boolean flag = userService.saveOrUpdateBatch(userBeanList);
8     System.out.println("flag=" + flag);
9 }

 

4.批量插入或更新数据,并且指定每个批次大小为 3

 1 @Test
 2 void contextLoads() {
 3     List<UserBean> userBeanList = new ArrayList<>();
 4     userBeanList.add(new UserBean(9992, "username-update"));
 5     userBeanList.add(new UserBean(9993, "username-update"));
 6     userBeanList.add(new UserBean(9994, "username-update"));
 7     userBeanList.add(new UserBean(9995, "username-update"));
 8     userBeanList.add(new UserBean(9996, "username-update"));
 9     userBeanList.add(new UserBean(9997, "username-update"));
10     userBeanList.add(new UserBean(9998, "username-update"));
11     userBeanList.add(new UserBean(9000, "username-save"));
12     boolean flag = userService.saveOrUpdateBatch(userBeanList, 3);
13     System.out.println("flag=" + flag);
14 }

 

三、删除数据

// 根据 entity 条件,删除记录
boolean remove(Wrapper<T> queryWrapper);
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);
// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);

 

1.根据 ID 删除数据

1     @Autowired
2     private UserService userService;
3  
4     @Test
5     void contextLoads() {
6         boolean flag = userService.removeById(9991);
7         System.out.println("flag=" + flag);
8     }

 

2.根据多个ID批量删除数据

1 @Test
2 void contextLoads() {
3     List<Integer> ids = Arrays.asList(9000, 9992, 9993);
4     boolean flag = userService.removeByIds(ids);
5     System.out.println("flag=" + flag);
6 }

 

3.根据 QueryWrapper 查询条件删除数据

1 @Test
2 void contextLoads() {
3     QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
4     wrapper.eq("name", "name-update");
5     boolean flag = userService.remove(wrapper);
6     System.out.println("flag=" + flag);
7 }

 

4.根据 Map 条件对象删除数据

1 @Test
2 void contextLoads() {
3     Map<String,Object> conditionMap = new HashMap<>();
4     conditionMap.put("name", "username-update");
5      
6     boolean flag = userService.removeByMap(conditionMap);
7     System.out.println("flag=" + flag);
8 }

 

四、更新数据

// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update(Wrapper<T> updateWrapper);
// 根据 whereEntity 条件,更新记录
boolean update(T entity, Wrapper<T> updateWrapper);
// 根据 ID 选择修改
boolean updateById(T entity);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

 

1.根据用户 ID 更新用户数据

1     @Autowired
2     private UserService userService;
3  
4     @Test
5     void contextLoads() {
6         UserBean entity = new UserBean(11, "tom");
7         boolean flag = userService.updateById(entity);
8         System.out.println("flag=" + flag);
9     }

 

2.批量更新用户信息,依然根据用户ID进行更新(这里的用户ID即主键)

 1 @Test
 2 void contextLoads() {
 3     List<UserBean> entityList = new ArrayList<>();
 4     entityList.add( new UserBean(11, "name-update-11"));
 5     entityList.add( new UserBean(12, "name-update-12"));
 6     entityList.add( new UserBean(13, "name-update-13"));
 7     entityList.add( new UserBean(14, "name-update-14"));
 8  
 9     boolean flag = userService.updateBatchById(entityList);
10     System.out.println("flag=" + flag);
11 }

 

3.根据 UpdateWrapper 对象构建的条件进行更新

 1 @Test
 2 void contextLoads() {
 3     UpdateWrapper<UserBean> wrapper = new UpdateWrapper<>();
 4     wrapper.ge("user_id", 11);
 5     wrapper.le("user_id", 14);
 6  
 7     UserBean entity = new UserBean();
 8     entity.setName("name-" + System.currentTimeMillis());
 9  
10     boolean flag = userService.update(entity, wrapper);
11     System.out.println("flag=" + flag);
12 }

 

五、获取单条数据

在 IService 接口中提供了很多以 get 开头的方法,这些方法用来从数据库中获取一条记录

如:根据ID获取数据记录。当数据库返回多于一条数据,则抛出错误信息。方法定义如下:

// 根据 ID 查询
T getById(Serializable id);
// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
T getOne(Wrapper<T> queryWrapper, boolean throwEx);
// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

 

1.根据数据ID、 QueryWrapper、Map 条件查询数据

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         System.out.println("===================== getById ===================");
 7         System.out.println( userService.getById(1) );
 8  
 9         System.out.println("===================== getOne ===================");
10         QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
11         wrapper.eq("user_id", 2);
12         System.out.println( userService.getOne(wrapper) );
13  
14         System.out.println("===================== getMap ===================");
15         Map<String, Object> resultMap = userService.getMap(wrapper);
16         System.out.println(JSONObject.toJSONString(resultMap));
17  
18         System.out.println("===================== getObj ===================");
19         userService.getObj(wrapper, new Function<Object, UserBean>() {
20             @Override
21             public UserBean apply(Object o) {
22                 System.out.println(JSONObject.toJSONString(o));
23                 return null;
24             }
25         });
26     }

 

2.通过指定 throwEx=true 参数,然后测试当返回多条数据时是否抛出异常

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
 7         wrapper.lt("user_id", 10);
 8  
 9         // 第二个参数
10         // 如果返回的结果集多余一条数据,则抛出如下错误:
11         // TooManyResultsException
12         UserBean userBean = userService.getOne(wrapper, true);
13         System.out.println(userBean);
14     }

 

六、获取数据列表

在 IService 接口中提供了很多 list 开头的方法,这些方法将根据查询条件获取多条数据。这些方法的定义如下:

// 查询所有
List<T> list();
// 查询列表
List<T> list(Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);
// 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);
// 查询所有列表
List<Map<String, Object>> listMaps();
// 查询列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
// 查询全部记录
List<Object> listObjs();
// 查询全部记录
<V> List<V> listObjs(Function<? super Object, V> mapper);
// 根据 Wrapper 条件,查询全部记录
List<Object> listObjs(Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录
<V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

 

1.使用不带任何参数的 list() 方法查询数据表所有记录

1     @Autowired
2     private UserService userService;
3  
4     @Test
5     void contextLoads() {
6         List<UserBean> userBeanList = userService.list();
7         System.out.println("size=" + userBeanList.size());
8     }

 

2.查询用户ID大于 10,小于 20 且性别为“男”的用户列表

 1     @Autowired
 2     private UserService userService;
 3  
 4     @Test
 5     void contextLoads() {
 6         QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
 7         wrapper.gt("user_id", 10);
 8         wrapper.lt("user_id", 20);
 9         wrapper.eq("sex", "男");
10  
11         List<UserBean> userBeanList = userService.list(wrapper);
12         for(UserBean userBean : userBeanList) {
13             System.out.println(userBean);
14         }
15     }

 

标签:Service,userBeanList,CRUD,UserBean,flag,userService,new,entity
来源: https://www.cnblogs.com/ang0/p/16147172.html