SpringBoot查询的结果按视图结果展示结果

SpringBoot查询的结果按视图结果展示结果

现在有这样一个需求,当查询用户信息列表的时候不需要将用户的密码展示出来。
而根据用户的Id查询用户信息,就应该把密码带上。
@JsonView 的用途:可以为Json字符串和java对象之间的转换提供一个视图。

  1. 先贴出来用户的实体类:

    package com.imooc.dto;
    
    import java.sql.Date;
    
    import javax.validation.constraints.Past;
    
    import org.hibernate.validator.constraints.NotBlank;
    
    import com.fasterxml.jackson.annotation.JsonView;
    import com.imooc.vailator.MyConstraint;
    
    public class User {
    
        public interface UserSimpleView {
        };
    
        public interface UserDetailView extends UserSimpleView {
        };
    
        private String id;
    
        private String username;
    
        private String password;
    
        private Date birthday;
    
        @JsonView(UserSimpleView.class)
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        @JsonView(UserSimpleView.class)
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        @JsonView(UserDetailView.class)
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @JsonView(UserSimpleView.class)
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }
    

    可以看出来用户ID,用户名,生日是简单的视图
    密码又继承了简单的视图

  2. 对实体类的采用

    
    package com.imooc.web.controller;
    
    /**
     * @author liuzh
     *
     */
    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @GetMapping
        @JsonView(User.UserSimpleView.class)
        @ApiOperation(value = "用户查询服务")
        public List<User> query(UserQueryCondition condition, Pageable pageable) {
            System.out.println(ReflectionToStringBuilder.toString(condition, ToStringStyle.MULTI_LINE_STYLE));
            System.out.println(ReflectionToStringBuilder.toString(pageable, ToStringStyle.MULTI_LINE_STYLE));
            List<User> users = new ArrayList<User>();
            users.add(new User());
            users.add(new User());
            users.add(new User());
            return users;
        }
    
        @GetMapping("/{id:\\d+}")
        @JsonView(User.UserDetailView.class)
        public User getInfo(@ApiParam("用户ID") @PathVariable String id) {
            // throw new UserNotExistException(id);
            // throw new RuntimeException("This user in not exist");
            System.out.println("进入getinfo服务");
            User user = new User();
            user.setUsername("tom");
            return user;
        }
    
  3. 使用WireMock进行测试

    package com.imooc.web.controller;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class UserControllerTest {
    
        @Autowired
        private WebApplicationContext wac;
    
        private MockMvc mockMvc;
    
        @Before
        public void sertUp() {
            mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
        }
    
        @Test
        public void whenQuerySuccess() throws Exception {
            String result = mockMvc
                    .perform(get("/user").param("username", "jojo").param("age", "18").param("ageTo", "60")
                            .param("xxx", "yyy").param("size", "15").param("page", "3").param("sort", "age,desc")
                            .contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(status().isOk()).andExpect(jsonPath("$.length()").value(3)).andReturn().getResponse()
                    .getContentAsString();
            System.out.println(result);
        }
    
        @Test
        public void whenGetInfoSuccess() throws Exception {
            String result = mockMvc.perform(get("/user/1").contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(status().isOk()).andExpect(jsonPath("$.username").value("tom")).andReturn().getResponse()
                    .getContentAsString();
            System.out.println(result);
        }
    
        @Test
        public void whenGetInfoFail() throws Exception {
            mockMvc.perform(get("/user/a").contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(status().is4xxClientError());
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种用于构建用户界面的JavaScript框架,而Spring Boot是一个用于构建企业级Java应用的框架,Neo4j是一种图形数据库。想要将它们结合起来实现视图可视化,可以按照以下步骤进行: 1. 使用Vue来创建前端界面:使用Vue的组件和路由功能,可以方便地创建用户界面。可以使用Vue的模板语法和数据绑定来实现动态更新界面的功能。 2. 使用Spring Boot来创建后端服务:Spring Boot提供了丰富的功能和库,可以轻松地构建和管理后端服务。可以使用Spring Boot的依赖注入和控制反转来管理组件之间的依赖关系。 3. 使用Neo4j来存储和管理数据:Neo4j是一种图形数据库,可以存储关系型数据,并提供灵活的查询功能。可以使用Neo4j的图形查询语言来查询和操作数据库中的数据。 4. 将Vue和Spring Boot连接起来:可以使用Vue的Ajax或Axios等工具来发送和接收数据。可以使用Spring Boot的REST API来处理前端请求,并与Neo4j进行交互。 5. 实现数据的可视化:根据需要,在前端界面中使用合适的图表库或可视化工具来展示从后端获取的数据。可以根据数据类型选择合适的图表类型,如柱状图、折线图或饼图等。 通过以上步骤,就可以实现将Vue、Spring Boot和Neo4j结合起来,实现视图可视化的功能。前端界面使用Vue进行开发,后端服务使用Spring Boot进行构建和管理,而数据存储和查询则使用Neo4j进行处理。最终,可以通过前端界面展示从后端获取的数据,并以图表或其他形式进行可视化展示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值