哪里出问题了呢?这个报错这么修改

来源: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);
    }
}

https://img.mukewang.com/climg/627395a6092e18f913840226.jpg

写回答

1回答

好帮手慕小小

2022-05-05

同学你好,代码中存在的问题如下:

1、若id字段为主键,则无法重复设置为1,若建议同学添加数据时删除id字段,或清空teacher表后将id值设置为 0,使其默认进行自增,例如:

https://img.mukewang.com/climg/6273b6e409bd726907860546.jpg

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);

https://img.mukewang.com/climg/6273b65609dc2c6e13880233.jpg

祝学习愉快~

0

0 学习 · 9886 问题

查看课程