Mybatis 的介绍

Mybatis

简介

1.1什么是MyBatis?

1646726388122

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

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

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

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

  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。

  • 2013年11月迁移到Github

如何获取Mybatis?

 

1.2持久化?

持久化就是将程序的数据在持久状态瞬时状态转化的过程

内存: 断电即失

数据库(jdbc) io 文件持久化

生活: 冷冻 冷藏 罐头

为什么需要持久化?

  • 有一些对象,不能让他丢掉。

  • 内存太贵了

     

1.3持久层

Dao 层,service 层,Controller层......

  • 完成持久化工作的代码块

  • 层界限十分明显。

1.4为什么需要Mybatis?

  • 方便

  • 帮助程序员将数据存到数据库中。

  • 传统的jdbc代码太复杂,简化。框架。自动化。

  • 优点

    • 简单易学。

    • 灵活

    • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

    • 提供映射标签,支持对象与数据库的orm字段关系映射。

    • 提供对象关系映射标签,支持对象关系组建维护。

    • 提供xml标签,支持编写动态sql。

    1.5Mybatis 配置文件 模板

    <?xml version="1.0" encoding="UTF-8"?>
    2 <!DOCTYPE configuration
    3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5 <!-- mybatis的基本配置文件:主要配置基本的上下文参数和运行环境 -->
    6 <configuration>
    7     <!--配置-->
    8     <properties></properties>
    9     <!--设置 -->
    10     <settings></settings>
    11     <!--类型命名 -->
    12     <!--别名:pojo对象的别名 -->
    13     <typeAliases>
    14         <typeAlias alias="user" type="com.daily.pojo.User"></typeAlias>
    15         <typeAlias alias="product" type="com.daily.pojo.Product"></typeAlias>
    16     </typeAliases>
    17     <!--类型处理器 -->
    18     <typeHandlers></typeHandlers>
    19     <!--对象工厂 -->
    20     <objectFactory></objectFactory>
    21     <!--插件 -->
    22     <plugins></plugins>
    23     <!-- 环境模式:development开发模式 work工作模式 -->
    24     <environments default="development">
    25         <!--环境变量 -->
    26         <environment id="development">
    27             <!--事务管理器 -->
    28             <transactionManager type="JDBC" />
    29             <!--数据源 -->
    30             <dataSource type="POOLED">
    31                 <property name="driver" value="${db.driver}" />
    32                 <property name="url" value="${db.url}" />
    33                 <property name="username" value="${db.username}" />
    34                 <property name="password" value="${db.pwd}" />
    35             </dataSource>
    36         </environment>
    37     </environments>
    38     <!--数据库厂商标示 -->
    39     <databaseIdProvider></databaseIdProvider>
    40     <!-- 映射器 -->
    41     <mappers>
    42         <mapper resource="com/daily/mapper/UserMapper.xml" />
    43         <mapper resource="com/daily/mapper/ProductMapper.xml" />
    44     </mappers>
    45 </configuration>

模板 2

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 通过这个配置文件完成mybatis与数据库的连接 -->
<configuration>
获取数据源的方法
<!-- 1.引入 database.properties 文件-->
<properties resource="database.properties"/>
<!-- 2.自定义数据源-->
<!-- <properties>-->
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&amp;characterEncoding=utf-8"/>-->
<!-- <property name="user" value="root"/>-->
<!-- <property name="password" value="root"/>-->
<!-- </properties>-->
<!-- &lt;!&ndash; 3.引用加自定义数据源方法(推荐)&ndash;&gt;-->
<!-- <properties resource="database.properties">-->
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="url" value="jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&amp;characterEncoding=utf-8&amp;relaxAutoCommit=true&amp;zeroDateTimeBehavior=convertToNull"/>-->
<!-- <property name="user" value="root"/>-->
<!-- <property name="password" value="root"/>-->
<!-- </properties>-->
<!-- 配置mybatis的log实现为LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J" />
<!--NONE表示自动关闭匹配机制-->
<!-- <setting name="autoMappingBehavior" value="NONE"/>-->
<!--PARTIAL表示开启匹配机制-->
<!-- <setting name="autoMappingBehavior" value="PARTIAL"/>-->
<!--FULL表示多表查询开启匹配机制-->
<setting name="autoMappingBehavior" value="FULL"/>
</settings>

<!--类型别名的配置-->
<!--以后写的类无论是出参还是入参都在这个包里面扫-->
<typeAliases>
<package name="cn.smbms.pojo"/>
</typeAliases>
<!--环境-->
<environments default="development">
<!--环境变量-->
<environment id="development">
<!--配置事务管理,采用JDBC的事务管理  -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 映射器 -->
<mappers>
<mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
       <mapper resource="cn/smbms/dao/bill/BillMapper.xml"/>
<mapper resource="cn/smbms/dao/role/RoleMapper.xml"/>
<mapper resource="cn/smbms/dao/address/AddressMapper.xml"/>
</mappers>



</configuration>

从 SqlSessionFactory 中获取 SqlSession

既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。

把他提成一个util 类 调用他

public class MyBatisUtil {
   private  static SqlSessionFactory  factory; // 创建一个工厂
   //静态代码块
   static {
       System.out.println("static factory===>");
       try {
           //1 获取mybatis-config.xml的输入流(使用字节输入流读取配置文件)
           InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
           //2 创建SqlSessionFactory对象,完成对配置文件的读取
           factory=new SqlSessionFactoryBuilder().build(is);
      }catch (Exception e){
           e.printStackTrace();
      }
  }
   //获取连接对象的方法
   public static SqlSession createSqlSession(){
      return factory.openSession(false);//关闭自动提交
  }
   //释放连接对象的方法
   public static void colseSqlSession(SqlSession sqlSession){
       if (sqlSession!=null){
           sqlSession.close();
      }
  }

}

 

posted @ 2022-03-12 10:18  北大青猫  阅读(156)  评论(0)    收藏  举报