MyBatis入门(二)

Configuration.xml中配置的内容和顺序如下:

以下内容可以有, 也可以没有, 但是有的时候, 顺序必须是这样的:

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
    • environment(环境子属性对象)
      • transactionManager(事务管理)
      • dataSource(数据源)
  • mappers(映射器)

properties属性的配置

  • 可以直接在properties节点里面定义属性:

    
    


  • 也可以在classpath路径下创建一个properties文件, 加载到properties属性中

1.创建db.properties文件

jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root

2.在properties节点中加载


3.加载属性文件的同时, 还可以在properties节点中定义属性, 当两者中有相同名字的属性时, 使用的是属性文件中的内容!

typeAliases节点配置: 给pojo类型起一个别名, 方便使用!

  • 给指定的一个类型起别名, 使用时不区分大小写

    
    

  • 给指定的包下的所有类型起别名,别名就是类名, 使用时不区分大小写

    
    

  • 默认已支持的别名:
别名 映射的类型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
map Map

mappers(映射器)

Mapper配置的几种方法:

  • 使用相对于classpath的资源
    如:

  • 使用mapper接口类路径
    如:

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

  • 注册指定包下的所有mapper接口
    如:

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

resultMap

如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。

  • 在mapper.xml文件中:


    
    
    
    
    
    
    


  • 说明
:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个。
Property:表示User类的属性。
Column:表示sql查询出来的字段名。
Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。
:普通结果,即pojo的属性。

动态SQL语句

  • if语句: 满足条件的时候拼接sql语句

  select * from user
  where 1=1
  
    and id=#{id}
  
  
    and username like '%${username}%'
  

  • where语句: 删除多余的and

  select * from user
 
    
      and id=#{id}
    
    
      and username like '%${username}%'
    
 

  • foreach: 循环
    ids是一个id的集合:

  
    #{id}
  

说明:
collection: 指定要遍历的集合
open: 要生成的语句以什么内容开始
close:要生成的语句以什么内容结束
item: 遍历到集合中的元素
separator: 每个元素之间的分隔符

  • SQL片段: 提取公共SQL语句, 方便复用
    
        select * from books
    
    
    
    
    

resultMap定义一对一, 一对多关系

  • 一对一
    
    
        
        
        
        
        
        
        
        
            
            
            
            
        
    
    

说明

association:表示进行关联查询单条记录
property:表示关联查询的结果存储在com.gongxm.mybatis.po.Orders的user属性中
javaType:表示关联查询的结果类型
:查询结果的user_id列对应关联对象的id属性,这里是表示user_id是关联查询对象的唯一标识。
:查询结果的username列对应关联对象的username属性。
  • 一对多
  
        
        
        
        
        
        
        
        
                
              
            
            
            
            
        
    
    

说明

collection部分定义了用户关联的订单信息。表示关联查询结果集
property="orders":关联查询的结果集存储在User对象的上哪个属性。
ofType="orders":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。
的意义同一对一查询。

你可能感兴趣的:(MyBatis入门(二))