MyBatis之association和collection标签

一般情况下一对一使用标签,一对多使用标签

association标签

属性

描述

property

属性名:映射实体类属性名

column

映射数据库字段名

javaType

属性类型:映射java类型

jdbcType

映射数据库类型

select

用于加载复杂类型属性的映射语句的ID(它会从column 属性指定的列中检索数据,作为参数传递给目标 select 语句。)

resultMap

不使用嵌套模式,而是将此关联的嵌套结果集映射到一个外部的标签中,然后通过 id 进行引入。

typeHandler

数据库与Java类型匹配处理器,使用这个属性可以覆写类型处理器。

notNullColumn

不为空的列,如果指定了列,只有指定字段不为空时,Mybatis才会创建对象。

columnPrefix

给关联的数据库中的 column 添加一个前缀(如果不添加前缀,当 两个表同时有 id 字段,查询结果时一定会产生覆盖,使得两个 id 的值一样)

resultSet

用于加载复杂类型的结果集名字。

foreignColumn

指定外键对应的列名,指定的列将与父类型中 column 的给出的列进行匹配。

autoMapping

自动封装,如果数据库字段和javaBean的字段名一样,可以使用这种方式;(但是不建议采取,如果非要使用此功能,那就在全局配置中加上mapUnderscoreToCamelCase=TRUE,它会使经典数据库字段命名规则翻译成javaBean的经典命名规则,如:a_column翻译成aColumn。)

fetchType

延迟加载,lazy打开延迟加载,eager积极加载。指定属性后,将在映射中忽略全局配置参数lazyLoadingEnabled,使用属性的值。

实体类

/**
*书籍
*/
@Data
public class Book {
    private String id;
    private String name;
    private String author;
    private Double price;
    //出版社
    private Publisher pub;//一本书对应一个出版社
}
/**
*出版社
*/
@Data
public class Publisher {
    private String id;
    private String name;
    private String phone;
    private String address;
}

XML

关联查询



    
    
    
    
    
    
    
    
        
        
        
        
    


嵌套查询


    
    
    
    
    
    
    







    
    
    
    



collection标签

标签属性基本相同,就多了一个ofType属性。

属性

描述

ofType

映射集合的类型(指定一对多的集合里面元素的类型)

实体类

/**
*出版社
*/
@Data
public class Publisher {
    private String id;
    private String name;
    private String phone;
    private String address;
    // 书籍列表
    List bookList;//一个出版社对应多本书
}
/**
*书籍
*/
@Data
public class Book {
    private String id;
    private String name;
    private String author;
    private Double price;
}

XML

关联查询


    
    
    
    
    
        
        
        
        
    


嵌套查询


    
    
    
    
    





    
    
    
    



    SELECT * FROM book e
    WHERE e.publisher_id = #{id}

多条件查询

修改collection标签的column属性,{参数名1=列名1,参数名2=列名2}

/**
*出版社
*/
@Data
public class Publisher {
    private String id;
    private String name;
    private String phone;
    private String address;
    // 新增---状态
    private String status;
    // 书籍列表
    List bookList;//一个出版社对应多本书
}
/**
*书籍
*/
@Data
public class Book {
    private String id;
    private String name;
    private String author;
    private Double price;
    // 新增---状态
    private String status;
}



jdbc Type与java Type对照表

JDBC Type

Java Type

CHAR

String

VARCHAR

String

LONGVARCHAR

String

NUMERIC

java.math.BigDecimal

DECIMAL

java.math.BigDecimal

BIT

boolean

BOOLEAN

boolean

TINYINT

byte

SMALLINT

short

INTEGER

INTEGER

BIGINT

long

REAL

float

FLOAT

double

DOUBLE

double

BINARY

byte[]

VARBINARY

byte[]

LONGVARBINARY

byte[]

DATE

java.sql.Date

TIME

java.sql.Time

TIMESTAMP

java.sql.Timestamp

CLOB

Clob

BLOB

Blob

ARRAY

Array

DISTINCT

mapping of underlying type

STRUCT

Struct

REF

Ref

DATALINK

java.net.URL

你可能感兴趣的:(#,mybatis,mybatis,mysql)