浅谈MyBatis

什么是MyBatis? 

MyBatis 是一款优秀的持久层框架 

它支持自定义 SQL、存储过程以及高级映射。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。        

MyBatis的

1、maven仓库

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

<dependency>
​
  <groupId>org.mybatis</groupId>
​
  <artifactId>mybatis</artifactId>
​
  <version>3.5.9</version>
​
</dependency>

2、中文文档

mybatis – MyBatis 3 | 简介

3、GitHub

mybatis/mybatis-3: MyBatis SQL mapper framework for Java (github.com)

也就是来说,MyBatis就是一个持久性框架来简化sql,和对数据库的操作,对传统的JDBC进行简化、框架、自动化


运行原理       

         当框架启动时,通过configuration解析mybatis-config.xml配置文件(即核心配置文件MyBatis 核心配置文件和pom.xml_AN_NI_112的博客-CSDN博客 这个文章里面有必写的文件内容)和mapper.xml映射文件,sql语句写在mapper.xml文件中,映射文件可以使用xml方式或者注解方式,然后由configuration获得-->SqlSessionFactoryBuilder 获得-->sqlsessionfactory(想象成:数据库连接池 )对象,再由sqlsessionfactory获得-->sqlsession数据库访问会话对象,通过会话对象获得对应DAO层的mapper对象,通过调用mapper对象相应方法,框架就会自动执行sql语句从而获得结果。

             展现了面向接口编程的厉害之处:解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好

1、这里使用MyBatis当然做简化来--->注解开发:

  • @select ()

  • @update ()

  • @Insert ()

  • @delete ()

同时:lombok也可,要注意导入依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

但是MyBatis是基于xml来实现sql的,xml很重要!!!

2、MyBatis缓存

一级缓存就是SqlSession(默认)

二级缓存

1、开启全局缓存 【mybatis-config.xml】

<setting name="cacheEnabled" value="true"/>
  • 如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中;

2、去每个mapper.xml中配置使用二级缓存

<cache/>

动态SQL(MyBatis 的强大特性之一)

最后就是使用动态SQL来对sql语句进一步优化根据不同的查询条件 , 生成不同的Sql语句 会更好的提高程序开发效率

即if、where、set、choose等等

<select id="queryBlogIf" parameterType="map" resultType="blog">
  select * from blog where
   <if test="title != null">
      title = #{title}
   </if>
   <if test="author != null">
      and author = #{author}
   </if>
</select>
<select id="query" parameterType="map" resultType="blog">
  select * from blog
   <where>
       <if test="title != null">
          title = #{title}
       </if>
       <if test="author != null">
          and author = #{author}
       </if>
   </where>
</select>
<!--注意set是用的逗号隔开-->
<update id="update" parameterType="map">
  update blog
     <set>
         <if test="title != null">
            title = #{title},
         </if>
         <if test="author != null">
            author = #{author}
         </if>
     </set>
  where id = #{id};
</update>

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值