当我进入邮递员时,我得到了json,但没有他的"钥匙",为什么?也许我犯了一个错误,我没有注意到。请帮忙。
我正在使用一个存储过程来做一个crud。
这是向我展示邮递员的 JSON。没有他的"钥匙"告诉我
{
"data": [
[
1,
"aaa",
"aaa@gmail.com"
],
[
2,
"bbb",
"bbb@gmail.com"
],
[
3,
"ccc",
"ccc@gmail.com"
]
]
}
我想得到这样的东西。
{
"data": [
{
userCod: 1,
userName: "aaa",
userEmail: "aaa@gmail.com"
},
{
userCod: 2,
userName: "bbb",
userEmail: "bbb@gmail.com"
},
{
userCod: 3,
userName: "ccc",
userEmail: "ccc@gmail.com"
}
]
}
我留下代码
public class ApiResponse {
private List<UserTest> data;
public List<UserTest> getData() {
return data;
}
public void setData(List<UserTest> data) {
this.data = data;
}
}
@Entity
@Table(name = "tbUsers")
public class UserTest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "userCod")
private Long id;
@Column(name = "userName")
private String name;
@Column(name = "userEmail")
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
@Repository
public class ClienteDaoImpl implements IClienteDao{
@Autowired
private EntityManager em;
@SuppressWarnings("unchecked")
@Override
public ApiResponse mntUsers(int op) {
ApiResponse api = new ApiResponse();
Session session = em.unwrap(Session.class);
ProcedureCall call = session.createStoredProcedureCall("sp_MntUser");
call.registerParameter(1, Integer.class, ParameterMode.IN);
call.setParameter(1, op);
call.execute();
api.setData(call.getResultList());
return api;
}
}
@RestController
@RequestMapping(value = "/mntUsers")
public class ClienteController {
@Autowired
private ClienteServiceImpl serviceImpl;
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> CrudUsers(@RequestParam(value = "option", required = true) Integer op) {
return new ResponseEntity<>(serviceImpl.mntUsers(op),HttpStatus.OK);
}
}
创建一个名为getCollectionType
的方法
public static <T, C extends Collection<T>> C getCollectionType(Iterable<?> from, C to, Class<T> listClass) {
for (Object item: from) {
to.add(listClass.cast(item));
}
return to;
}
然后在以下行使用它:
api.setData(getCollectionType(call.getResultList(),
new ArrayList<UserTest>(),
UserTest.class));