MyBatis 之旅

 

什么是MyBatis?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

总结:持久层框架,SQL定制,省去JDBC操作,JavaBean与数据库记录的对应转换;

Batis,估计是作者的一只宠物鸟;

 

关于Mapper.xml 文件的位置

1、放在 java 目录下:站在开发角度,方便查找文件,便于开发(我比较喜欢);

2、放在resources 目录下:站在软件工程角度,xml确实是资源文件;

修改配置属性

mybatis:
  mapper-locations: classpath:com/example/mybatis/dev/dao/mapper/*Mapper.xml
  type-aliases-package: com.example.mybatis.dev.model

 

修改pom.xml文件

<build>

        <resources>
            
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.xmlinclude>
                includes>
            resource>
            
            <resource>
                <directory>src/main/resourcesdirectory>
            resource>
        resources>


        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

 

resultType、resultMap的区别

resultType:将SQL得返回映射出 POJO,当SQL列和POJO属性不对应时,无法成功映射
resultMap:先通过标签将POJO于SQL返回绑定,然后通过resultMap返回,类似对SQL于POJO之间做了格式化、二次加工;

简单情况下,无区别,复杂情况下resultMap更强大;

 

二级缓存

一级缓存

生命周期:

a.伴随着SqlSession的创建而创建,伴随着sqlSession的销毁而销毁;

b.SqlSession 调用了 clearCache() 时,缓存对象中的数据会清空,缓存对象还存在;

b.SqlSession 调用了 update()、insert()、delete() 时,缓存对象中的数据会清空,缓存对象还存在;

 

二级缓存

生命周期

a.应用的启动缓存创建,应用的停止,缓存销毁(此观点不是很正确)

b.同 namespace 下,调用 标签需要写多表关联,耦合高一点,面向对象好一差;

第二种:效率略差一点,进行了N次访问数据库, 标签内语句写的耦合度高,表示很不喜欢 ,但是处于性能考虑,表示没办法);

多对一

JavaBean : 在many端 建立one的属性;

*Mapper.xml

使用  标签  与  类似

 多对多

JavaBean : 在任意端 建立另一端的集合属性;

*Mapper.xml

使用  

 

你可能感兴趣的:(MyBatis 之旅)