mybatis 框架 的应用之三(操作两张没有关联的表,存在主键和外键关系)

#注意:要配置开启多条语句操作,否则会报错( org.apache.ibatis.exceptions.PersistenceException)
lf-driver=com.mysql.jdbc.Driver
lf-url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
lf-user=LF
lf-password=LF
<?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>
    <properties resource="mybatis/config/db.properties"></properties>
    <!-- 配置环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理器的类型 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源相关的属性 -->
            <dataSource type="UNPOOLED">
                <property name="driver" value="${lf-driver}"/>
                <property name="url" value="${lf-url}"/>
                <property name="username" value="${lf-user}"/>
                <property name="password" value="${lf-password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--END 配置环境 -->
    
    <!-- 配置映射路径 -->
    <mappers>
        <mapper resource="mybatis/config/mapper/StudentMapper.xml"/>
    </mappers>
    <!-- END 配置映射路径 -->
    
</configuration> 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
<mapper namespace="cn.zr.mybatismore.entity.StudentMapper">
    <!-- 添加数据 -->
    <insert id="addData" parameterType="cn.zr.mybatismore.entity.Student">
        
        INSERT INTO STUDENT (NAME,AGE) VALUES (#{name},#{age});
    
        
        INSERT INTO COURSE (NAME,SCORE) VALUES 
        <foreach collection="courses" item="val" separator=",">
            (#{val.name},#{val.score})
        </foreach>
        
    </insert>
</mapper>
  
package cn.zr.mybatismore.entity;

public class Course {
    
    private String name;
    private Integer score;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }
    public Course() {
    }
    public Course(String name, Integer score) {
        this.name = name;
        this.score = score;
    }
    @Override
    public String toString() {
        return "Course [name=" + name + ", score=" + score + "]";
    }
    
}
package cn.zr.mybatismore.entity;

import java.util.List;

public class Student {
    
    private String name;
    private Integer age;
    private List<Course> courses;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public List<Course> getCourses() {
        return courses;
    }
    public void setCourses(List<Course> courses) {
        this.courses = courses;
    }
    public Student() {
    }
    public Student(String name, Integer age, List<Course> courses) {
        this.name = name;
        this.age = age;
        this.courses = courses;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", courses="
                + courses + "]";
    }
    
}
package cn.zr.mybatismore.entity;

public interface StudentMapper {

    /**
     * 添加数据
     * @param student 被添加的对象
     * @return 操作数据库的数据量
     */
    int addData(Student student);
    
}
package cn.zr.mybatismore.utils;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionManager;

import cn.zr.mybatismore.entity.Course;
import cn.zr.mybatismore.entity.Student;
import cn.zr.mybatismore.entity.StudentMapper;

public class TestMore {
    
    public static void main(String[] args) {
        TestMore testMore = new TestMore();
        testMore.addData();
    }
    
    private static SqlSessionManager sessionManager;
    private static StudentMapper studentMapper;
    static{
        String resource = "mybatis/config/mybatis-config.xml";
        try {
            Reader reader = Resources.getResourceAsReader(resource);
            sessionManager = SqlSessionManager.newInstance(reader);
            studentMapper = sessionManager.getMapper(StudentMapper.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    
    public void addData(){
        
        Course course1 = new Course("math", 80);
        Course course2 = new Course("chinese", 90);
        Course course3 = new Course("english", 85);
        List<Course> courses =new ArrayList<Course>();
        courses.add(course1);
        courses.add(course2);
        courses.add(course3);
        Student student = new Student();
        student.setName("ganlu");
        student.setAge(23);
        student.setCourses(courses);
        System.out.println(student);
        int count = studentMapper.addData(student);
        if (count > 0) {
            System.out.println("操作成功"+count+"条数据");
        }else {
            System.out.println("操作失败");
        }
    }
    
}
原文地址:https://www.cnblogs.com/lantu1989/p/6396944.html