MyBatis入门学习——环境搭建

在MyBatis官方文档上是这样说的:

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

首先MyBatis是一个框架,那么什么是框架?通俗的说框架就是具有特定约束性的工具类.框架就是为解决问题制定的一套约束,在提供功能基础上进行扩充. 框架中一些不能被封装的代码(变量),需要使用框架者新建一个配置文件,在文件中添加变量内容. 配置文件需要建立在特定位置和特定名称 通过反射技术实例化配置文件中的类并获取到类属性的值。从而达到解决某类问题的目的,凡是框架都是为了简便开发而诞生的

MyBatis是一个持久层框架。持久层框架解决的就是数据访问的问题,那么MyBatis的功能就是连接数据库进行CRUD操作,而为了优化CRUD操作还提供了数据库连接池、事务管理、数据表的映射等一系列功能。其实MyBatis的底层就是对JDBC进行了封装而已。

学习一个框架的第一步就是搭建所需要的环境,这个环境指的就是所需要的Jar包和依赖的配置文件。下面就是MyBatis所以依赖的包。

MyBatis对配置文件没有名称上的要求,路径一般全局配置文件放在classes根部录下也就是srcresources下。

我们看一下全局的MyBatis配置文件的格式:

<?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">
<!-- 配置根节点,后续文章会解释为什么叫configuration -->
<configuration>
    <!-- default引用的是environment标签的id,意思是当前是用的环境 -->
    <environments default="MySql">
        <!-- 声明可以是用的环境,id环境唯一标识 -->
        <environment id="MySql">
            <!--
                事务管理器 type=[JDBC|MANAGED]  MyBatis 中有两种类型的事务管理器
                JDBC – 这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
                MANAGED – 这个配置就是让容器来管理事务的整个生命周期,或许框架整合时会说这个配置。
            -->
            <transactionManager type="JDBC"></transactionManager>
            <!--
                数据源配置 使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
                有三种内建的数据源类型(也就是 type=[UNPOOLED|POOLED|JNDI])
                UNPOOLED:不使用连接池每次请求都会创建新的数据连接对象
                POOLED:使用连接池方式
                JNDI:使用JNDI方式
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/test" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!--
        映射器  MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。
        但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。
        Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。
    -->
    <mappers>
        <!-- 使用相对于类路径的资源引用 -->
        <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
        <!-- 使用完全限定资源定位符(URL)基本不会使用 -->
        <mapper url="file:///var/mappers/AuthorMapper.xml"/>
        <!-- 使用映射器接口实现类的完全限定类名 -->
        <mapper class="org.mybatis.builder.AuthorMapper"/>
        <!-- 将包内的映射器接口实现全部注册为映射器 -->
        <package name="org.mybatis.builder"/>
    </mappers>
</configuration>

MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。

SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

  • cache – 给定命名空间的缓存配置。
  • cache-ref – 其他命名空间缓存配置的引用。
  • resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
  • sql – 可被其他语句引用的可重用语句块。
  • insert – 映射插入语句
  • update – 映射更新语句
  • delete – 映射删除语句
  • select – 映射查询语句

接下来我们看一下mapper映射器配置文件的格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
    映射器 namespace命名空间 用于语句隔离
-->
<mapper namespace="org.mybatis.example.AuthorMapper">
    <!--
        select 查询
        id	在命名空间中唯一的标识符,可以被用来引用这条语句。
        parameterType	参数类型
        resultType	返回值类型
    -->
    <select id="selectAuthor" parameterType="int" resultType="hashmap">
        SELECT * FROM Author WHERE ID = #{id}
    </select>
    <!--
        insert 插入
        id	在命名空间中唯一的标识符,可以被用来引用这条语句。
        parameterType	参数类型
    -->
    <insert id="insertAuthor" parameterType="org.mybatis.example.Author">
        insert into Author (id,username,password,email,bio)
        values (#{id},#{username},#{password},#{email},#{bio})
    </insert>
    <!--
        update 修改
        id	在命名空间中唯一的标识符,可以被用来引用这条语句。
        parameterType	参数类型
    -->
    <update id="updateAuthor" parameterType="org.mybatis.example.Author">
        update Author set
        username = #{username},
        password = #{password},
        email = #{email},
        bio = #{bio}
        where id = #{id}
    </update>
    <!--
        delete 删除
        id	在命名空间中唯一的标识符,可以被用来引用这条语句。
        parameterType	参数类型
    -->
    <delete id="deleteAuthor" parameterType="int">
        delete from Author where id = #{id}
    </delete>
</mapper>

环境搭建好后我们怎么使用呢?

public class TestMybatis {
    public static void main(String[] args) throws IOException {
        //加载全局配置文件
        InputStream is =  Resources.getResourceAsStream("Mybatis.xml");
        //创建SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //获取SqlSession
        SqlSession sqlSession = factory.openSession();
        Map<String,Integer> map = new HashMap<>();
        map.put("id", 1);
        //执行SQL获取结果
        List<Author> list = sqlSession.selectList("org.mybatis.example.AuthorMapper.selectAuthor", map);
        //关闭SqlSession
        sqlSession.close();
    }
}

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory是SqlSession的工厂,而SqlSession就相当于JDBC中的执行器一样,它可以执行SQL并返回结果。而 SqlSessionFactory 则是通过我们刚刚配置的全局配置文件MyBatis.xml创建的。

附上所需Jar包,百度云盘地址

附上所需Jar包,CSDN地址

猜你喜欢

转载自blog.csdn.net/u013268066/article/details/82811089
今日推荐