在pom.xml文件最后追加< build >标签,以便可以将xml文件复制到classes中,并在程序运行时正确读取。
src/main/java
**/*.xml
src/main/resources
**/*.xml
**/*.properties
**/*.ini
用 concat('%',#{keyword},'%')
标签:< selectKey id="" parameterType="" order="AFTER|BEFORE">
/*主键回填 在插入语句执行之后 查询刚刚插入的 记录 的 id 赋值给 productId */
select last_insert_id()
insert into t_product (productId,productName,brand) values (null,#{productName},#{brand})
当表的字段和实体类的属性名不同时,自动ORM就会失效,那么这时候我们就可以通过手动配置ORM来解决了
通过 < resultMap id="" type="" > 映射,匹配列名与属性名。
重点
】 实体间的关系:关联关系(拥有 has、属于 belong)
|
数据准备
DROP TABLE IF EXISTS `t_passenger`;
CREATE TABLE `t_passenger` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`sex` varchar(32) DEFAULT NULL,
`birthday` date DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='乘客';
/*Data for the table `t_passenger` */
insert into `t_passenger`(`id`,`name`,`sex`,`birthday`) values (1,'zs','男','2021-07-29'),(2,'lss','女','2021-07-28');
DROP TABLE IF EXISTS `t_passport`;
CREATE TABLE `t_passport` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nationality` varchar(32) DEFAULT NULL,
`expire` date DEFAULT NULL,
`passenger_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
/*Data for the table `t_passport` */
insert into `t_passport`(`id`,`nationality`,`expire`,`passenger_id`) values (1,'中国','2023-07-29',1),(2,'韩国','2023-07-28',2);
实体类
public class Passenger {
private Integer id;
private String name;
private String sex;
private Date birthday;
private Passport passport;
}
public class Passport {
private Integer id;
private String nationality;
private Date expire;
private Integer passenger_id;
}
.xml中的sql和手动的ORM
注意:指定“一方”关系时(对象),使用 < association javaType=" ">