[Mybatis] 简介

🌈有幸相识 ,我是小相。有一个大厂梦,努力奔赴!加油陌生人!🌈
☁️该文章是跟随B站狂神学习Mybatis时的笔记与心得,若与您有用,感谢点赞。文章不免有不足之处,请指出,我会及时改正!

1. 简介

官方文档:https://mybatis.net.cn/index.html

github网址:https://github.com/mybatis/mybatis-3

MyBatis 是一款优秀的开源的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML注解来配置和映射原始类型、接口和 Java POJO映射成数据库中的记录。

2.安装

Maven Repository: mybatis (mvnrepository.com)

通过maven安装,在pom.xml添加如下内容:

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>

3. 特点

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活统一:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

4. 核心配置文件

XML核心配置文件包含了对Mybatis的核心配置和全局配置。包括:

  • settings标签 :全局配置标签,用于开启或关闭mybatis中的某些功能

  • typeAliases标签:类型别名,意在降低冗余的全限定类名书写。

  • environments标签:环境配置标签,获取数据库连接实例的数据源(driver、url、username、password等)。

  • mappers标签:映射器,用于告诉mybatis去哪里寻找SQL映射语句。 每一个*Mapper.xml都需要在mybatis核心配置文件中注册。

  • properties标签:属性标签,用于引入外部配置文件或自定义属性。

    一个简单的核心配置文件mybatis-config.xml示例如下:

    <?xml version="1.0" encoding="UTF8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!--核心配置-->
    <configuration>
        <properties resource="db.properties"/>
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
            <setting name="logImpl" value="STDOUT_LOGGING"/>
            <setting name="cacheEnabled" value="true"/>
        </settings>
    
        <typeAliases>
            <typeAlias type="top.xcyxiaoxiang.pojo.Blog" alias="Blog"/>
        </typeAliases>
    
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;charsetEncoding=utf-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <mapper class="top.xcyxiaoxiang.dao.BlogMapper"/>
        </mappers>
        <properties
    
    </configuration>
    

具体内容将在后面逐步进行涉及。

5. Mybatis工具类

每个基于 MyBatis 的应用都是以一个SqlSessionFactory的实例sqlSession为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法,通过 SqlSession 可以直接执行已映射的 SQL 语句。

5.1 SqlSessionFactoryBuilder

用于创建并获取SqlSessionFactory对象。该类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。 因此 SqlSessionFactoryBuilder 实例的最佳作用域就是局部变量

5.2 SqlSessionFactory

用于获取SqlSession对象。SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,直到结束应用。因此 SqlSessionFactory 的最佳作用域是应用作用域

5.3 SqlSession

每进行一个数据库操作,就打开同一个sqlSession, 换句话说,每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它

综上, 我们完全可以将该部分封装成一个工具类,在使用时直接调用方法getSqlSession()获取一个sqlSession对象。

public class MybatisUnits {
    private static SqlSessionFactory sqlSessionFactory;
    // 使用静态代码块, 使得该部分代码在该应用的整个生命周期中只运行一次
    static{
        InputStream inputStream = null;
        try {
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获得 SqlSession 的实例。
     * SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
     * 通过 SqlSession可以直接执行已映射的 SQL 语句。
     * @return SqlSession的一个实例
     */
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }
}

6. *Mapper.xml文件

在Mybatis中,接口实现类由原来的* Impl.java变成 *Mapper.xml。通过xml来代替查询语句,替换了原先的接口实现类。在一个 XML 映射文件中,可以定义无数个映射语句。

一个*Mapper.xml文件的简单示例如下:

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.xcyxiaoxiang.dao.UserMapper">
    <select id="getUserList" resultType="top.xcyxiaoxiang.pojo.User">
        select * from users
    </select>
</mapper>
  • namespace:命名空间,对应一个mapper接口,该参数必须指定。
  • select:查询标签,查询SQL语句将会放置此处。
    • id:对应该mapper接口中的一个操作方法。
    • resultType:返回值类型,通常使用全限定名(或别名)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值