Mybatis的学习总结

配置文件(见代码注释):




    
    

    
    
    
        
        
        
    
    
    
        
    
    
    
        
        
            
            
            
            
                
                
                
                
            
        
    
    
        
        
        
    




 Mybatis的三种传参方式:

单个参数

①直接传送(String,int,char...)

多个参数

②封装成对象传送

③findByColumn(@Param("column") String column, @Param("value") String value);

传参:

#{ }  用来获取参数的,并且是以预编译方式传值,更安全。

${ } 用来获取参数,但是是字符串拼接,如果传一个具体的值,需要加 '${}' 

注:一般${}向sql中传入动态列名。例如order by ${id}

resultMap自定义映射:
    
        
        
        
        
        
        
    
    

通过id查找resultMap,返回的是一个map,property表示传入属性名,column表示数据库中列名 

 单表自动结果封装需要注意的事项:

1,数据库中列名与类中属性名应一致,不一样可以起别名;

2,命名标准情况下开启驼峰命名自动转换;

3,类中必须要有无参构造方法(默认找无参构造方法)(如果有参,务必加上无参构造方法,模型类中无参构造方法必须保证存在)

嵌套查询
 
    
        
        
        
            
        
    
    
    
动态SQL

test条件成立执行

当标签中if只要有一个成立,自动添加一个where关键字,当成立条件有and/or,去掉开头关键字。

prefix 添加指定前缀

prefixOverrides覆盖指定关键字

choose choose和when otherwise是配套标签,类似于java中的switch,只会选择满足条件的一个

当标签中有条件成立时,可以动态添加一个set关键字,如果最后有多余/缺少逗号,会删除/补上

    
        update student
        
            
                name=#{name},
            
            
                gender=#{gender},
            
            
                phone=#{phone},
            
        
        where id=#{id}
    
    
        delete from student where
        
            #{a}
        
    
    

xml中不能出现的特殊符号:&(&),<(<)...

Mtbatis缓存(减去数据库压力,提高查询性能)

缓存就是让数据离程序更近,一般数据存储在内存中。MySQL数据库数据存储在硬盘上,读写速度慢,如果大量请求访问,可能会将数据库压垮。

Mybatis的一级缓存和二级缓存:

一级缓存:
SqlSession级别的缓存,缓存的数据只在SqlSession内有效。
一级缓存mybatis已近为我们自动开启,不用我们手动操作,而且我们是关闭不了的!!但是我们可以手动清除缓存。
一级缓存是sqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个基于 PerpetualCache的HashMap本地缓存数据结构,用于缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互不影响的。

二级缓存:
mapper级别的缓存,同一个namespace公用这一个缓存,所以对SqlSession是共享的。
二级缓存需要我们手动开启。
二级缓存(全局级别) 是mapper级别的缓存,多个sqlSession去操作同一个Mapper的sql语句,多个sqlSession可以共用二级缓存,二级缓存是跨sqlSession的。
 

 

你可能感兴趣的:(Mybatis,mybatis,学习)