Mybatis入门

Posted 錵開や落幕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis入门相关的知识,希望对你有一定的参考价值。

2.2.2 添加 Mybatis3.4.5 的坐标

在 pom.xml 文件中添加 Mybatis3.4.5 的坐标,如下:

    <dependencies>
       <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.5</version>
       </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.6</version>
       <scope>runtime</scope>
    </dependency>
    <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.12</version>
    </dependency>
 </dependencies>

2.2.4 编写持久层接口 IUserDao

IUserDao 接口就是我们的持久层接口(也可以写成 UserDao 或者 UserMapper),具体代码如下:

/**
*
* <p>Title: IUserDao</p>
* <p>Description: 用户的持久层操作</p>
* <p>Company: http://www.itheima.com/ </p>
*/
public interface IUserDao {
    /**
    * 查询所有用户
    * @return
    */
    List<User> findAll();
}

使用xml映射文件的方法

要求:
创建位置:必须和持久层接口在相同的包中。
名称:必须以持久层接口名称命名文件名,扩展名是.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="com.itheima.dao.IUserDao">
<!-- 配置查询所有操作 --> 
     <select id="findAll" resultType="com.itheima.domain.User">
          select * from user
     </select>
</mapper>

2.2.6 编写 SqlMapConfig.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>
    <!-- 配置 mybatis 的环境 --> 
    <environments default="mysql">
        <!-- 配置 mysql 的环境 --> 
        <environment id="mysql">
            <!-- 配置事务的类型 --> 
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置连接数据库的信息:用的是数据源(连接池) --> 
            <dataSource type="POOLED"> 
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ee50"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 告知 mybatis 映射配置的位置 -->
    <mappers> 
        <mapper resource="com/itheima/dao/IUserDao.xml"/>
    </mappers>
</configuration>

2.2.7 编写测试类

/**
* 
* <p>Title: MybatisTest</p>
* <p>Description: 测试 mybatis 的环境</p>
* <p>Company: http://www.itheima.com/ </p>
*/
public class MybatisTest {
       public static void main(String[] args)throws Exception {
           //1.读取配置文件
          InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
          //2.创建 SqlSessionFactory 的构建者对象
          SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
           //3.使用构建者创建工厂对象 SqlSessionFactory
          SqlSessionFactory factory = builder.build(in);
          //4.使用 SqlSessionFactory 生产 SqlSession 对象
          SqlSession session = factory.openSession();
          //5.使用 SqlSession 创建 dao 接口的代理对象
         IUserDao userDao = session.getMapper(IUserDao.class);
         //6.使用代理对象执行查询所有方法
         List<User> users = userDao.findAll();
         for(User user : users) {
             System.out.println(user);
         }
        //7.释放资源
         session.close();
        in.close();
      }
 }

小结

通过快速入门示例,我们发现使用 mybatis 是非常容易的一件事情,因为只需要编写 Dao 接口并且按照

mybatis 要求编写两个配置文件,就可以实现功能。远比我们之前的 jdbc 方便多了。(我们使用注解之后,将变得
更为简单,只需要编写一个 mybatis 配置文件就够了。)
但是,这里面包含了许多细节,比如为什么会有工厂对象(SqlSessionFactory),为什么有了工厂之后还
要有构建者对象(SqlSessionFactoryBuilder),为什么 IUserDao.xml 在创建时有位置和文件名的要求等等。
这些问题我们在自定义 mybatis 框架的章节,通过层层剥离的方式,给大家讲解。
请注意:我们讲解自定义 Mybatis 框架,不是让大家回去自己去写个 mybatis,而是让我们能更好了了解
mybatis 内部是怎么执行的,在以后的开发中能更好的使用 mybatis 框架,同时对它的设计理念(设计模式)有
一个认识。

2.4 补充(基于注解的 mybatis 使用)

2.4.1 在持久层接口中添加注解

/**
* 
* <p>Title: IUserDao</p>
* <p>Description: 用户的持久层操作</p>
* <p>Company: http://www.itheima.com/ </p>
*/
public interface IUserDao {
    /**
    * 查询所有用户
    * @return
    */
    @Select("select * from user")
    List<User> findAll();
}

2.4.2 修改 SqlMapConfig.xml

<!-- 告知 mybatis 映射配置的位置 --> 
<mappers> 
     <mapper class="com.itheima.dao.IUserDao"/>
</mappers>

2.4.3 注意事项:

在使用基于注解的 Mybatis 配置时,请移除 xml 的映射配置(IUserDao.xml)。
补充

以上是关于Mybatis入门的主要内容,如果未能解决你的问题,请参考以下文章

markdown [mybatis参考]关于mybatis #mybatis的一些片段

推荐net开发cad入门阅读代码片段

MyBatis入门详解——附代码

MyBatis从入门到精通—MyBatis基础知识和快速入门

MyBatis从入门到入土——使用详解

myBatis简单入门