哪里出问题了呢?这个报错这么修改
来源: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);
祝学习愉快~
相似问题