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)。
    补充

  • 相关阅读:
    增加文章
    网站之注册
    C#常用的引用
    Session.Abandon和Session.Clear有何不同 (转)
    C#文件路径的写法
    UpdatePanel的用法详解
    [转]asp:ScriptManager
    Git 常用命令
    AJAX请求 $.post方法的使用
    a 标签中调用js的几种方法
  • 原文地址:https://www.cnblogs.com/zgrey/p/13286183.html
Copyright © 2011-2022 走看看