1. 正文
1. mybatis的一些优化
2. 解决属性名和字段名不一致的情况。
3. 联表查询 。
4. 动态sql语句。
2. mybatis的一些优化
(1) 可以把数据源的信息抽取到properties文件中。
创建一个属性文件内容如下
再配置文件中引入属性文件
(2) 添加日志信息—打印sql语句。
(1)引入日志jar文件
(2)创建日志的配置文件 log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
(3)测试
3. 为实体类起别名(不建议大家使用)
(1)在mybatis配置文件中设置别名
(2)在映射文件文件中使用别名
4. 实体的属性和数据库表的字段不一致
(1)为查询的结果起别名-----与属性名一致。
(2)使用resultMap来创建属性与字段的映射关系
5. mybatis联表查询
5.1 多对一
(1)表与表之间的关系------->外键【逻辑外键】
CREATE TABLE teacher(
t_id INT PRIMARY KEY AUTO_INCREMENT,
t_name VARCHAR(20)
);
//teacher class 一对多
CREATE TABLE class(
c_id INT PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR(20),
teacher_id INT -- 外键
);
ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id)
REFERENCES teacher(t_id);
INSERT INTO teacher(t_name) VALUES('LS1');
INSERT INTO teacher(t_name) VALUES('LS2');
INSERT INTO class(c_name, teacher_id) VALUES('bj_a', 1);
INSERT INTO class(c_name, teacher_id) VALUES('bj_b', 2);
(2)java实体类如何维持这种关系。
Teacher {tid, tname}
Class {cid,cname,Teacher teacher}---->class 只包含老师id号。 多对一 可以在多的实体中添加一的实体类对象。
(1)要求根据班级号 查询班级信息并带上老师的信息。
5.1.1 创建对应的实体类
5.1.2 映射文件
通过两次查询得到相应的结果
5.2 一对多。
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);
要求 根据班级id查询班级信息以及该班级下所有的学生信息。
总结:
1. mybatis的优化 1.数据源信息 2.加入了日志 3.实体类别名
2. 字段和属性不一致 (1)为查询的列起别名---属性名一致 (2)使用resultMap
3. mybatis关联查询。
一对一。
一对多。
xml 碰到特殊字符如何处理:
(1)可以使用转移字符;
(2)使用CDATA
<![CDATA[sql]]>