哪里出问题了呢?这个报错这么修改
来源:7-4 项目作业
weixin_慕的地0390393
2022-05-05 17:15:30
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="dev"> <environment id="dev"> <transactionManager type="JDBC"></transactionManager> <dataSource type="C3P0DatasourceFactory"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/teachers"/> <property name="user" value="root"/> <property name="password" value="520333"/> <property name="initialPoolSize" value="5"/> <property name="maxPoolSize" value="20"/> <property name="minPoolSize" value="5"/> </dataSource> </environment> </environments> <mappers> <mapper class="dao.TeacherDao"/> </mappers> </configuration>
TeacherDao
package dao;
import entity.Teacher;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import java.util.List;
public interface TeacherDao {
@Insert("insert into teacher(id,name,sex,j_no,subject,grade,description)" +
"<foreach collection=\"list\" item =\"item\" index =\"index\" separator=\",\">"+
"values(#{id},#{jNo},#{name},#{sex},#{subject},#{grade},#{description})"
+ "</foreach>")
public int insertTeachers(@Param("list") List<Teacher> list);
}MybatisUntil
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
public class MybatisUntil {
private static SqlSessionFactory sqlSessionFactory = null;
private static SqlSession sqlSession;
{
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public SqlSession openSession(){
return sqlSessionFactory.openSession();
}
public void closeSession(){
if(sqlSession != null){
sqlSession.close();
}
}
}C3P0DatasourceFactory
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;
public class C3P0DatasourceFactory extends UnpooledDataSourceFactory {
public C3P0DatasourceFactory(){
this.dataSource = new ComboPooledDataSource();
}
}Teacher
package entity;
public class Teacher {
private int id;
private String name;
private String sex;
private String subject;
private String grade;
private String description;
private int jNo;
public Teacher(){}
public Teacher(int id,int jNo,String name,String sex,String subject,String grade,String description){
this.id = id;
this.jNo = jNo;
this.name = name;
this.sex = sex;
this.subject =subject;
this.grade = grade;
this.description = description;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getjNo() {
return jNo;
}
public void setjNo(int jNo) {
this.jNo = jNo;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", subject='" + subject + '\'' +
", grade='" + grade + '\'' +
", description='" + description + '\'' +
", jNo=" + jNo +
'}';
}
}TeacherTest
import dao.TeacherDao;
import entity.Teacher;
import org.apache.ibatis.session.SqlSession;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TeacherTest {
MybatisUntil mybatisUntil = new MybatisUntil();
@Test
public void testInsert(){
SqlSession session = mybatisUntil.openSession();
List<Teacher> list = new ArrayList<>();
for(int i = 0;i < 500;i++){
Teacher teacher = new Teacher();
teacher.setId(1);
teacher.setjNo(11);
teacher.setName("老师");
teacher.setSex("男");
teacher.setSubject("数学");
teacher.setGrade("高二");
teacher.setDescription("年级主任");
list.add(teacher);
}
TeacherDao teacherDao = session.getMapper(TeacherDao.class);
int num = teacherDao.insertTeachers(list);
}
}
1回答
好帮手慕小小
2022-05-05
同学你好,代码中存在的问题如下:
1、若id字段为主键,则无法重复设置为1,若建议同学添加数据时删除id字段,或清空teacher表后将id值设置为 0,使其默认进行自增,例如:

2、报错提示找不到参数“id”,需要使用item.id来获取。同学批量插入语句书写有些问题且插入数据的字段不对应,修改为如下语句后重新测试运行。
@Insert("<script>"
+ "insert into teacher(id,name,sex,j_no,subject,grade,description) values"
+ "<foreach collection='list' item ='item' index ='index' separator=','>"
+ "(#{item.id},#{item.name},#{item.sex},#{item.jNo},#{item.subject},#{item.grade},#{item.description})"
+ "</foreach>"
+ "</script>")
public int insertTeachers(@Param("list") List<Teacher> list);
祝学习愉快~
相似问题