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("操作失败");
}
} }
mybatis 框架 的应用之三(操作两张没有关联的表,存在主键和外键关系)的更多相关文章
- Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束”
Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束 Sql 中的连接查询:就是为了避免笛卡尔积,因为涉及到多表查询的化,不使用连接查询,会先将多个互相乘,求出笛卡尔积,然后在在里面查询符合的 ...
- (10)MySQL触发器(同时操作两张表)
什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...
- SQL 两张结构一样的表合并查询 .
select * from table1 union all select * from table2 union all 是所有的都显示出来: select * from table1 union ...
- 【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)
原文转自:http://www.2cto.com/database/201412/358397.html 问题: 这里假设我需要在IP1上的database1上访问IP2的database数据库内的t ...
- 【mybatis】mybatis查询 结果 用map接收,无实体接收 + 关联子表 一并返回主子表的结果
如果后台程序没有实体对应mysql的数据表. 而mybatis想要查询mysql这个数据表的数据,返回给应用程序. 应用程序该如何接收? =============================== ...
- 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句
最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...
- mysql之表与表关联和表操作
一 表于表之间的关联 foregin key:设置外键表于表之间建立关联. 多对一关联: 创建步骤,应该先创建好被关联的那一张表,然后再去创建关联的那一张表. 关联表的多条对应着被关联的那张表的一条记 ...
- myBatis框架之入门(四)
Mybatis多表管理查询 多表关联关系分析: 多表关联:至少两个表关联.分析多表关系的经验技巧:从一条记录出发,不要从表整体去分析,比如分析A表和B表关系,A表中的一条记录对应B表中的几条记录,如果 ...
- ssm(spring、springmvc、mybatis)框架整合
第一次接触这3大框架,打算一个一个慢慢学,参照网上资料搭建了一个ssm项目,作为新手吃亏在jar包的导入上,比如jdbc DataSource配置的时候由于导入的jar包不兼容或者缺包导致项目无法正常 ...
随机推荐
- larave 控制器中获取路由参数
Laravel中获取路由参数Route Parameters的五种方法示例 作者:SeekerLiu 这篇文章主要给大家介绍了关于Laravel中获取路由参数Route Parameters的五种方法 ...
- php 设计数据库连接池
摘要 之前总是以脚本面向过程的方式写PHP代码,所以很大程度上来说,既不规范,也不安全,更不容易维护.为了代码的重用,准备写一套自己的工具库,这样的话,以后写项目的时候就可以很轻松的进行使用啦. 今天 ...
- 神奇的TextField(2)
var text_content:TextField=new TextField(); text_content.autoSize="left"; // text_content. ...
- WDF - CSS 书写规范
CSS已经写了很久了,但是感觉代码还是有点乱,不够漂亮.今天抽点时间整理一下手头上正在做的网站样式,顺带做一个自己比较适应的书写规范,以供以后参考.先暂时这样吧,其他以后再完善. 逻辑:大小 → 位置 ...
- 关于Bootstrap table的回调onLoadSuccess()和onPostBody()使用小结
关于Bootstrap table的回调onLoadSuccess()和onPostBody()使用小结 Bootstrap table 是一款基于 Bootstrap 的 jQuery 表格插件, ...
- kali视频(16-20)学习
第五周 kali视频(16-20)学习 16.漏洞分析之数据库评估(一) 17.漏洞分析之数据库评估(二) 18.漏洞分析之WEB应用代理 19.漏洞分析之burpsuite 20.漏洞分析之fuzz ...
- C# 在类文件自动添加文件注释的方法
对于vs2013来讲, 步骤: 1.VS2013 中找到(安装盘符以C盘为例)C:\ProgramFiles(x86)\Microsoft VisualStudio12.0\Common7\IDE\I ...
- DataTable / DataSet 与 xml 的相互转换
之前做DataTable和DataSet转xml一直使用XmlSerializer 序列化完成.今天发现新方法,哇咔咔方便了很多.还不用担心Name为空时报错 static void Main(str ...
- UART驱动分析
在linux用户层上要操作底层串口需要对/dev/ttySxxx操作,这里的ttySx指实际的终端串口. 以下以全志A64为实例,分析UART驱动以及浅谈TTY架构. linux-3.10/drive ...
- xcomponent web 跨域组件介绍
1. 项目地址: https://github.com/krakenjs/xcomponent 2. 支持的特性 a. Render an iframe or popup on a different ...