SpringMVC實現RESTful服務
這里只說service,controller層的代碼。Mapper層則直接繼承Mapper<T>則可以,記住mybatis-config.xml一定要配置分頁插件和mapper類的插件。
1.查詢所有用戶
service:
1 @Autowired 2 private IUserMapper userMapper; 3 4 @Override 5 public EasyUIResult getAllUser(Integer page, Integer rows) { 6 // TODO Auto-generated method stub 7 8 // 后台幫我們封裝了一個page並且直接存到本地線程 9 PageHelper.startPage(page, rows); 10 Example example = new Example(User.class); 11 example.setOrderByClause("updated desc"); 12 List<User> list = userMapper.selectByExample(example); 13 PageInfo<User> pageInfo = new PageInfo<>(list); 14 return new EasyUIResult(pageInfo.getTotal(), pageInfo.getList()); 15 }
controller:
1 /** 2 * 查詢所有用戶 返回數據類型為:json格式 3 * 4 * @param page 5 * @param rows 6 * @return 7 */ 8 @RequestMapping(value = "list", method = { RequestMethod.POST }) 9 public @ResponseBody EasyUIResult finAllUser(@RequestParam(value = "page", defaultValue = "1") Integer page, 10 @RequestParam(value = "rows", defaultValue = "5") Integer rows) { 11 return userService.getAllUser(page, rows); 12 }
2.根據用戶id查詢用戶信息
service:
1 @Override 2 public User queryUserById(Long id) { 3 // TODO Auto-generated method stub 4 return userMapper.selectByPrimaryKey(id); 5 }
cotroller:
1 @Controller 2 @RequestMapping("user/rest") 3 public class RestUserController { 4 5 @Autowired 6 private IUserService userService; 7 8 /** 9 * 根據id查詢用戶信息 10 * 11 * @param id 12 * @return 13 */ 14 @RequestMapping(value = "{userId}", method = RequestMethod.GET) 15 public ResponseEntity<User> queryUserById(@PathVariable(value = "userId") Long id) { 16 try { 17 User user = userService.queryUserById(id); 18 if (user == null) { 19 return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); 20 } 21 // return ResponseEntity.ok(user); 22 } catch (Exception e) { 23 // TODO: handle exception 24 e.printStackTrace(); 25 } 26 // return ResponseEntity.status(500).body(null); 27 // 系統內部異常 28 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); 29 }
3.添加一個用戶
service:
1 @Override 2 public Boolean saveUser(User user) { 3 // TODO Auto-generated method stub 4 return userMapper.insertSelective(user) == 1; 5 }
controller:
1 /** 2 * 添加一個用戶 3 * 4 * @param user 5 * @return 6 */ 7 @RequestMapping(method = RequestMethod.POST) 8 public ResponseEntity<Void> addUser(User user) { 9 try { 10 userService.saveUser(user); 11 return ResponseEntity.status(HttpStatus.CREATED).build(); 12 // return ResponseEntity.ok(user); 13 } catch (Exception e) { 14 // TODO: handle exception 15 e.printStackTrace(); 16 } 17 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 18 }
4.修改用戶
service:
1 @Override 2 public boolean updateUsers(User user) { 3 // TODO Auto-generated method stub 4 // 修改用戶所有信息 5 // userMapper.updateByPrimaryKey(User); 6 // 修改不為空的字段 7 // userMapper.updateByPrimaryKeySelective(record); 8 return userMapper.updateByPrimaryKey(user) == 1; 9 }
controller:
/** * 跟新用戶 * * @param user * @return */ @RequestMapping(method = RequestMethod.PUT) public ResponseEntity<Void> updateUser(User user) { try { boolean b = userService.updateUsers(user); if (b) { return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); } // return ResponseEntity.ok(user); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); }
5.刪除
service:
1 @Override 2 public boolean deleteUser(Long id) { 3 // TODO Auto-generated method stub 4 return userMapper.deleteByPrimaryKey(id) == 1; 5 }
controller:
1 /** 2 * 刪除一個用戶 3 * 4 * @param id 5 * @return 6 */ 7 @RequestMapping(method = RequestMethod.DELETE) 8 public ResponseEntity<Void> deleteUser(@RequestParam(value = "id", defaultValue = "0") Long id) { 9 try { 10 if (id == 0) { 11 return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); 12 } 13 boolean b = userService.deleteUser(id); 14 if (b) { 15 return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); 16 } 17 // return ResponseEntity.ok(user); 18 } catch (Exception e) { 19 // TODO: handle exception 20 e.printStackTrace(); 21 } 22 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 23 }
delete刪除時比較特殊:一定要注意
進行刪除和修改時,要在web.xml中配置過濾器(補充):
1 <!-- 2 將POST請求轉化為DELETE或者是PUT 3 要用_method指定真正的請求參數 4 --> 5 <filter> 6 <filter-name>HiddenHttpMethodFilter</filter-name> 7 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 8 </filter> 9 <filter-mapping> 10 <filter-name>HiddenHttpMethodFilter</filter-name> 11 <url-pattern>/*</url-pattern> 12 </filter-mapping>
1 <!-- 解決PUT請求無法提交表單數據的問題 --> 2 <filter> 3 <filter-name>HttpMethodFilter</filter-name> 4 <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>HttpMethodFilter</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping>
大功告成!!