#注意:要配置開啟多條語句操作,否則會報錯( 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("操作失敗"); } } }