重温Mybatis(一)---------hello,mybatis

     新的一年了,手里的工作也陆续完工了,在北京漂了快4年了,明年可能有新的打算,考虑回到我梦开始的地方。为了把握住金三银四,打算从今天开始,温习一下自己掌握的技术栈。就先拿mybatis开刀~

    Mybatis是当今最流行的持久层框架之一,优秀的半自动ORM设计,可以让我们灵活的通过配置来完成数据库与java实体类的映射,免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,使我们的代码与sql分离,更好的管理项目。

    首先,我们要使用mybatis很简单,只要引入相应的jar包即可,拿maven项目来说,只需要引入其gav依赖,我们的例子中要结合mysql来学习mybatis,所以还需要引入mysql相关的驱动包:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

    每个基于mybatis的应用都是以一个 SqlSessionFactory 的实例为核心的,SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder(建造者模式) 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件(传统spring项目,官方建议)或一个预先配置的 Configuration 实例(springboot项目)来构建出 SqlSessionFactory 实例。

  这里提到了SqlSessionFactoryBuilder,SqlSessionFactory XML 配置文件三个重要的元素,首先从配置文件说起。

  打开IDEA,创建一个普通的maven项目,在resource文件夹下创建一个名为mybatis-config.xml的配置文件(名字随便取,建议使用mybatis-config.xml),内容如下:

<?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>
    <properties resource="config.properties">
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </properties>

    </typeHandlers>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/divLayoutInfoMapper.xml"/>
    </mappers>
</configuration>

配置文件的详细内容在下节详细讨论,这里就创建好该配置文件,便于我们能够拿到SqlSessionFactoryBuilder类,进而获取到SqlSessionFactory类。

代码如下:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

   这样,我们就能拿到SqlSessionFactory对象了,接下来,从 SqlSessionFactory 中获取 SqlSession,再通过SqlSession拿到相应的mapper,调用其方法即可

try (SqlSession session = sqlSessionFactory.openSession()) {
 DivLayoutInfoDao mapper = session.getMapper(DivLayoutInfoDao.class);
 List<DivLayoutInfo> divLayoutInfos = mapper.selectOne();
}

  那么问题来了,sql在哪里执行的呢?mapper怎么和sql绑定的呢?怎么就通过调用方法的方式就实现了sql的执行呢?,那就是mybatis的核心之一,mapper.xml映射文件

<?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">
<mapper namespace="mybatis.dao.DivLayoutInfoDao">
    <resultMap id="result" type="mybatis.pojo.DivLayoutInfo">
        <result property="id" column="id" />
        <result property="modeName" column="mode_name"/>
    </resultMap>
    <select id="selectOne" resultMap="result">
    select * from div_layout_info
  </select>
</mapper>

  头文件也是mapper特有,表示该配置文件为mybatis的mapper配置文件,mapper标签中的namespace属性值对应与该mapper绑定的接口类,resultMap标签中的type属性值为查询结果集对应的java实体类路径,sql标签中的id对应接口中的方法名,这样,我们就能够把mapper接口和mapper.xml配置关联起来了,这也是为什么我们可以通过调用接口中的方法就能实现执行sql的原因了。

  至此,一个简单的hello,mybatis的demo就完成了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章