Mybatis手动配置ORM,不用自动ORM等操作

一、解决mapper.xml存放在resources以外路径中的读取问题

在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})
    

四、MyBatis自动ORM失效

表的字段和实体类的属性名不同时,自动ORM就会失效,那么这时候我们就可以通过手动配置ORM来解决了

Mybatis手动配置ORM,不用自动ORM等操作_第1张图片

 结果映射(ResultMap - 查询结果的封装规则):

通过 < resultMap id="" type="" > 映射,匹配列名与属性名。








    
        
        
        
    

    

五、MyBatis处理关联关系-多表连接【重点】   

实体间的关系:关联关系(拥有 has、属于 belong)

  • OneToOne:一对一关系(Passenger--- Passport)

  • OneToMany:一对多关系(Employee --- Department)

  • ManyToMany:多对多关系(Student --- Subject)

Mybatis手动配置ORM,不用自动ORM等操作_第2张图片

 1.一对一

数据准备

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=" "> 

2.待续...

你可能感兴趣的:(Java,mybatis,java,spring)