mybatis 框架 的应用之三(操作两张没有关联的表,存在主键和外键关系)
2017-02-14 11:41
465 查看
#注意:要配置开启多条语句操作,否则会报错( 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("操作失败"); } } }
相关文章推荐
- 数据库创建表时没有指定主外键,hibernate 如何 may to one的解决办法,按主键关联也是one to one的一种
- 无法确定依赖操作的有效顺序。由于外键约束、模型要求或存储生成的值,因此可能存在依赖关系。
- mybatis 数据库表中外键关系存在时 useGeneratedKeys="true" keyProperty="id"
- Mybatis插入操作 主键自增 返回成功 但是数据库没有数据
- Mybatis框架中的注解应用之关系映射
- 【hibernate框架】关系映射之一对一单向外键关联(XML实现)
- 无法确定依赖操作的有效顺序。由于外键约束、模型要求或存储生成的值,因此可能存在依赖关系
- 【hibernate框架】关系映射之一对一单项外键关联(Annotation实现)
- Android ORMLite框架入门用法教程二(两张表关联外键)
- Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)
- Java的Hibernate框架中的双向主键关联与双向外键关联
- SSM框架day02-MyBatis——046——关联查询-one2one-共享主键解决方案、047、048关联查询-什么是自关联、one2many-多表连接查询
- 没有外键关联的 关系删除遍历判断
- DataSet 添加数据集、行、列、主键和外键等操作示例
- 访问FTP提示。该文件没有程序与之关联来执行操作
- 解决win7“该文件没有与之关联的程序来执行该操作”
- Hibernate关系映射(2)_一对一双向外键关联
- Hibernate关系映射(1)_一对一单向外键关联
- DataSet 添加数据集、行、列、主键和外键等操作示例
- 共享主键、外键、关联表在表达对象关联关系时的微妙语义差别