zoukankan      html  css  js  c++  java
  • 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)。
    补充

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/zgrey/p/13286183.html
Copyright © 2011-2022 走看看