【Java】json与java对象转换,获得数据库⾃增主键,保存返回数据(个⼈梳
理)
【Java】json与java对象转换,获得数据库⾃增主键,保存返回数据(个⼈梳理)
模拟请求API 获得json数据,将json转换为java对象,再将java对象转换为list集合,再将list集合转换为字符串,传⼊数据库,并且获取数据库⾥表的⾃增主键,通过打印⽇志输出到控制台。
⽂章⽬录
前⾔
模拟请求API 解析保存返回数据
前端页⾯跳转,点击按钮解析,前端显⽰获取的json数据。后端处理json数据转换为java对象与 集合 到字符串 再存⼊数据库 最后在dao层⽤数据库⾃带的api获得存数据时的⾃增主键id,并将其⽤⽇志打印到控制台上
⼀、⾸先应具备jackson依赖
<jackson.version>2.12.0</jackson.version>
⼆、控制层转换json的逻辑
1.先给前端写⼀个跳转页⾯的接⼝
代码如下:
@RequestMapping("/getProductList")
@ResponseBody
public ModelAndView getJson() throws IOException {
ModelAndView mv = new ModelAndView();
mv.setViewName("getProductList");
return mv;
}
getProductList就是前端页⾯的名字同参
2.抒写控制层转换json和保存数据库的逻辑
代码如下):
@RequestMapping("/getProductListAndShow")
@ResponseBody
public Object getProductListAndShow(String url){
//请求接⼝返回字符串数据result,使⽤⼯具类(提供HttpJson)
String result = (url,"gbk");
System.out.println(result);
Map<String, Object> map = new HashMap<>();
Connection conn = null;
/
/字符串数据result转换为list对象:List<ShipProduct> list(提供⼯具类JSONUtil) List<ShipProduct> list = JSONUtil.jsonToArray(result, ShipProduct.class);
System.out.println(list);jdbctemplate查询一条数据
map.put("title", result);
// List<ShipProduct> shipProductList = Json();
for(ShipProduct str : list){
ShipProductSave shipProductSave = new ShipProductSave();
//再将list转换成字符串⽤JSONUtiL⼯具类为存储数据库做准备
String shipProductStr = JSONUtil.objectToJson(str);
shipProductSave.setShipProduct(shipProductStr);
//System.out.println("字符串" + shipProductStr);
//add返回⾃增主键 .add调⽤的写在dao层实现类的sql⽅法
int add = studentDao.add(shipProductSave);
//⽇志输出返回⾃增主键id
logger.info(String.valueOf(add));
}
return map;
}
三、存储数据库⽤到的DAO及DAO实现类
public interface IStudentDao {
int add(ShipProductSave shipProductSave);
/**
* 新增对象
*/
@Repository
public class StudentDaoImpl implements IStudentDao {
//private StudentMapper mapper = new StudentMapper();
//数据库表名并不是库名分析换库
@Override
public int add(ShipProductSave shipProductSave){
String sql="INSERT INTO `t_ship_product`(`ship_product`,`create_time`,`update_time`) values(?,now(),now())";
//now()是数据⾃带的插⼊时间api values前⾯括号⾥是数据库字段
KeyHolder keyHolder =new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator(){
public PreparedStatement createPreparedStatement(Connection connection)throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
//这⾥数据库只有1个存值字段所以填⼀个
ps.setString(ShipProduct());
return ps;
}
}, keyHolder);
//返回了⾃增主键的id值
Key().intValue();
}
⼆、接下来在PO层写两个实体类,第1个对应json数据的字段,第⼆个对应存储进数据库的字段
1.ShipProduct (对应json数据的字段)
代码如下:
public class ShipProduct {
private String express_type;
private Long product_id;
private String product_shortname;
public String getExpress_type(){
return express_type;
}
public void setExpress_type(String express_type){
}
public Long getProduct_id(){
return product_id;
}
public void setProduct_id(Long product_id){
this.product_id = product_id;
}
public String getProduct_shortname(){
return product_shortname;
}
public void setProduct_shortname(String product_shortname){
this.product_shortname = product_shortname;
}
}
2.ShipProductSave (对应存⼊数据库的字段)
代码如下:
import java.util.Date;
public class ShipProductSave {
private Integer id;
private String shipProduct;
private Date createTime;
private Date updateTime;
public ShipProductSave(){
}
public ShipProductSave(Integer id, String shipProduct, Date createTime, Date updateTime){ this.id = id;
this.shipProduct = shipProduct;
this.updateTime = updateTime;
}
public Integer getId(){
return id;
}
public void setId(Integer id){
this.id = id;
}
public String getShipProduct(){
return shipProduct;
}
public void setShipProduct(String shipProduct){
this.shipProduct = shipProduct;
}
public Date getCreateTime(){
return createTime;
}
public void setCreateTime(Date createTime){
}
public Date getUpdateTime(){
return updateTime;
}
public void setUpdateTime(Date updateTime){
this.updateTime = updateTime;
}
@Override
public String toString(){
return"ShipProduct{"+
"id="+ id +
", shipProduct='"+ shipProduct +'\''+
", createTime="+ createTime +
", updateTime="+ updateTime +
'}';
}
}
前⾯⽤到的封装到的⼯具类HttpJson
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论