ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Service CRUD

2022-04-16 00:00:58  阅读:159  来源: 互联网

标签:Service userBeanList CRUD UserBean flag userService new entity


一、保存数据

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有