zoukankan      html  css  js  c++  java
  • 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("操作失败");
            }
        }
        
    }
  • 相关阅读:
    《Orange'S:一个操作系统的实现》与上一版之比较
    IPC
    末日帝国——Agile公司的困境 (2)
    取经学道真经验——你听过这么享受的培训吗
    数据库设计指南(五)数据库小技巧
    软件项目开发典型风险一览
    数据库设计指南(四)保证数据的完整性
    官网的Ext direct包中.NET版的问题
    软件项目开发应写的13类文档
    面试EJB常考题
  • 原文地址:https://www.cnblogs.com/lantu1989/p/6396944.html
Copyright © 2011-2022 走看看