Mybatis-入门

mybatis的概述

  • mybatis是一个持久层框架,用java编写的。
  • 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
  • 它使用了ORM思想实现了结果集的封装。

ORM

  • Object Relational Mappging 对象关系映射
  • 就是把数据库表和实体类及实体类的属性对应起来

mybatis的环境搭建

1. 创建maven工程并导入坐标

<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. 创建实体类和dao的接口

3. 创建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>
    <!-- 配置 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/UserMapper.xml"/>
        </mappers>
</configuration>

4. 创建映射配置文件

  • mybatis的映射配置文件位置必须和dao接口的包结构相同
  • 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
  • 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
<?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>

5. 测试类

//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();

基于注解的入门案例

  1. 移除映射配置文件,在dao接口的方法上使用@Select注解,并且指定SQL语句
  2. 在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定

Mybatis分析

查询所有的分析

入门案例分析

自定义Mybatis分析

基于 XML 的自定义 Mybatis 框架

  • 编写读取配置文件 Resources类
  • 编写 Mapper 类: 用于封装查询时的必要信息:要执行的 SQL 语句和实体类的全限定类名
  • 编写 Configuration 配置类:1.数据库信息 2.sql 的 map 集合
  • 编写构建者 SqlSessionFactory类
  • 编写 SqlSessionFactory 接口和DefaultSqlSessionFactory 实现类 #openSession
  • 编写 SqlSession 接口和 DefaultSqlSession 实现类 #getMapper
  • 编写用于创建 Dao 接口代理对象的类

基于注解方式定义 Mybatis 框架

  • 自定义@Select 注解

自定义mybatis开发流程图

posted @ 2019-04-12 22:25  编程迷悟  阅读(139)  评论(0编辑  收藏  举报