本人恶补学习中,最近接手springboot项目,临近结尾时候有一个字符串转化成相应字段的数据储存数据库中,这个字符串中有三种字段,对应三种数据,并且这一个字符串是三行数据。(后面写数据库对应字段)抠了很久还没有写进去,就差这几行代码,实在不知道,请问哪位可否给我解惑?
代码如下
红框部分是我接收进来的字符串,具体如下
"{"questionId":aa1b66f7920c415cb878a52e6810116e,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":B;
"questionId":aa1b66f7920c415cb878a52e6810116e,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":C;
"questionId":409599c32b7346aea21d8d11a7a65cae,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":A;}"
之后进行了去掉斜线;
如图,红框部分是去掉之后的,字符串代码如下
"{"questionId":aa1b66f7920c415cb878a52e6810116e,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":B;
"questionId":aa1b66f7920c415cb878a52e6810116e,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":C;
"questionId":409599c32b7346aea21d8d11a7a65cae,"questionnaireId":ae48a70f3d084ee693b00a3549f4e687,"answer":A;}"
其中questionId,questionnaireId,answer为字段,后面都是需要写入数据库的数据,(这是一个选择题答案保存回答表的功能,BC为多选答案,A为单选答案)请问各位有谁能解答我的难题?
没有画红框部分的代码,我的想法是想写类似键值对,把需要的数据提出来,但是本人基础太差,实现不了,这个项目又自己独立的实在没办法
附上数据库表
前端直接组装 js的数组数据,后端用 List 作为 controller的入参即可, 参考如下:
let array = new Array();
let object = new Object();
array.push(object);
// ajax 直接data传 array
// 后端程序spring mvc 入参用 List<Entity>
看了你们的评论记录,你应该是还不明白如何使用数组,先不用想看他们那么复杂的东西,你可能还没到那种程度可以看明白他们在说什么。 你在你图片代码 60行之后加一条下面的代码。这样就回去到了一个集合, 遍历出来后就是你操作单个数据的写法了
List<AnswerQuestionEntity> list = JSON.parseArray(jsonobiect.toJSONString(),AnswerQuestionEntity.class);
for (AnswerQuestionEntity answer:list ) {
//answer 就是你操作的都是单个数据时显示的内容了
//重复你如何操作单个数据时候的操作就好,这里会根据你的数据量重复执行多次
}
题主的代码我觉得存在一定问题,使用的@RequestBody一般对应的是某个实体对象,题主直接用String类型
还有就是这个方法下如果没有其他代码,看着也提交不到数据库里边啊!这代码只是把一个实体的相关属性值设置上,并没有执行数据库的操作的代码啊!
我认为您的问题是如何从一个字符串中提取数据,并将这些数据存储到数据库中。首先,您需要先解析字符串,对于给定的字符串,我们需要定义一个数据模型来存储所需的三个字段,然后对初始字符串进行解析和提取,将数据填充到模型中,最后将该模型保存到数据库中。
您需要定义一个数据模型来存储所需的三个字段,即questionId,questionnaireId和answer。可以定义一个类来表示此模型,如下所示:
public class QuestionModel {
private int questionId;
private int questionnaireId;
private int answer;
public int getQuestionId() {
return questionId;
}
public void setQuestionId(int questionId) {
this.questionId = questionId;
}
public int getQuestionnaireId() {
return questionnaireId;
}
public void setQuestionnaireId(int questionnaireId) {
this.questionnaireId = questionnaireId;
}
public int getAnswer() {
return answer;
}
public void setAnswer(int answer) {
this.answer = answer;
}
}
为了解析字符串并提取数据,我们可以使用Java的字符串操作方法,例如indexOf,substring和trim等。我们可以将初始字符串拆分成三行,使用字符串操作方法从每行中提取数据,并将其填充到刚刚定义的数据模型中。下面是一个示例代码:
String inputStr = "questionId:1\nquestionnaireId:2\nanswer:3";
String[] inputArray = inputStr.split("\n");
QuestionModel questionModel = new QuestionModel();
for (String inputLine : inputArray) {
String[] lineArray = inputLine.split(":");
String key = lineArray[0].trim();
String value = lineArray[1].trim();
if (key.equals("questionId")) {
questionModel.setQuestionId(Integer.parseInt(value));
} else if (key.equals("questionnaireId")) {
questionModel.setQuestionnaireId(Integer.parseInt(value));
} else if (key.equals("answer")) {
questionModel.setAnswer(Integer.parseInt(value));
}
}
最后,您需要将填充好的数据模型保存到数据库中。在Spring Boot项目中,您可以使用JPA或者JdbcTemplate等技术来访问和更新数据库。在这里,我们使用JPA技术为例,在Spring Boot配置文件中配置数据库连接和实体类映射,然后就可以使用JpaRepository记录模型了,如下所示:
application.yml文件配置:
``` spring: datasource: url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8 username: root password: root driver-class-name: com.mysql.jdbc.Driver jpa: database: mysql show-sql: true hibernate: ddl-auto:
接收到的是一个JSON字符串,可以将其转换成java实体对象,例如:XXX xxx = JSON.parseObject(json,XXX.class);其中XXX就是你自己写的一个java实体类,每一个字段属性就是json字符串中的key。