1. 回顾
1. mybatis的一些优化
*(1) 引入数据库的属性文件
*(2) 添加的日志文件
* (3) 为实体类起别名
2. 如果列名和属性名不同!
*(1) 为查询得列名起别名---【属性名相同】
* (2) resultMap标签定义列名和属性名之间的映射关系。 ---【必须带有id标签】
3. 连表查询
*(1)多对一 resultMap
<association property="实体类得属性名" javaType="实体类的类型">
<id />
</association>
2. 正文:
2.1 通过两次查询得到多对一
2.2 一对多----讲一种实现方式
要求:
class teacher student表
根据班级编号查询班级信息 【含盖 老师信息 以及该班级中所有的学生信息】
CREATE TABLE student(
s_id INT PRIMARY KEY AUTO_INCREMENT,
s_name VARCHAR(20),
class_id INT
);
INSERT INTO student(s_name, class_id) VALUES('xs_A', 1);
INSERT INTO student(s_name, class_id) VALUES('xs_B', 1);
INSERT INTO student(s_name, class_id) VALUES('xs_C', 1);
INSERT INTO student(s_name, class_id) VALUES('xs_D', 2);
INSERT INTO student(s_name, class_id) VALUES('xs_E', 2);
INSERT INTO student(s_name, class_id) VALUES('xs_F', 2);
2.3 动态 SQL 与模糊查询
MyBatis动态语句分为4种元素:
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`money` double DEFAULT NULL,
`isdeleted` tinyint(4) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
1.if元素,如下
(1)如果name不为空 则按照name查询 如果为空 则查询所有。
2.where元素,如下
3.choose[when otherwise]
4. set 用在update上
5. foreach 遍历
总结:
1. 链表查询----- 一对多
2. 动态sql
[if where set (choose when otherwise) foreach ]