Java|Mybatis框架

2021/06/06 Java 共 4219 字,约 13 分钟

mybatis框架

1 简介

1.1 什么是框架?

它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。

使用框架的好处:

框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。

1.2三层架构

表现层
	是用于展示数据的
业务层
	是处理业务需求
持久层
	是和数据库交互的

1.3 持久层技术解决方案

JDBC技术
	Connection
	PreparedStatement
	ResultSet
Spring的JdbcTemplate
	Spring中对jdbc的简单封装
Apache的DBUtils
	它和Spring的JdbcTemplate很像也是对Jdbc的简单封装
以上这些都不是框架

	JDBC是规范
	Spring的JdbcTemplate和Apache的DBUtils都只是工具类

1.4 mybatis的概述

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

ORM
	Object Relational Mappging 对象关系映射
	
	简单的说
		就是把数据库表和实体类及实体类的属性对应起来
		让我们可以操作实体类就实现操作数据库表

		user			User
		id			    userId
		user_name		userName

	实体类中的属性和数据库表的字段名称保持一致
		user			User
		id			    id
		user_name		user_name

1.5 mybatis的入门

mybatis的环境搭建
	第一步:创建maven工程并导入坐标
	第二步:创建实体类和dao的接口
	第三步:创建Mybatis的主配置文件 SqlMapConifg.xml
	第四步:创建映射配置文件   IUserDao.xml
环境搭建的注意事项
第一个创建IUserDao.xml  IUserDao.java时名称是为了和我们之前的知识保持一致
	在Mybatis中它把持久层的操作接口名称和映射文件也叫做Mapper
	所以IUserDao  IUserMapper是一样的
第二个在idea中创建目录的时候它和包是不一样的
	包在创建时com.itheima.dao它是三级结构
	目录在创建时com.itheima.dao是一级目录
第三个mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个映射配置文件的操作配置select),id属性的取值必须是dao接口的方法名

当我们遵从了第三五点之后我们在开发中就无须再写dao的实现类
mybatis的入门案例
	第一步读取配置文件
	第二步创建SqlSessionFactory工厂
	第三步创建SqlSession
	第四步创建Dao接口的代理对象
	第五步执行dao中的方法
	第六步释放资源

	注意事项
		不要忘记在映射配置中告知mybatis要封装到哪个实体类中
		配置的方式指定实体类的全限定类名

mybatis基于注解的入门案例
	把IUserDao.xml移除在dao接口的方法上使用@Select注解并且指定SQL语句
	同时需要在SqlMapConfig.xml中的mapper配置时使用class属性指定dao接口的全限定类名
	明确
		我们在实际开发中都是越简便越好所以都是采用不写dao实现类的方式
		不管使用XML还是注解配置
		但是Mybatis它是支持写dao实现类的

1.6 自定义Mybatis的分析:

mybatis在使用代理dao的方式实现增删改查时做什么事呢
	只有两件事
		第一创建代理对象
		第二在代理对象中调用selectList
		
自定义mybatis能通过入门案例看到类
	class Resources
	class SqlSessionFactoryBuilder
	interface SqlSessionFactory
	interface SqlSession

2 Mybatis使用

Alt Text

2.1 基本

<?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>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
        <!--配置事物的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!--配置连接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="********8XX"/>
            </dataSource>
        </environment>
    </environments>
<!--    指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <mappers>
        <mapper resource="xyz/slienceme/dao/IUserDao.xml"/>
    </mappers>
</configuration>
<?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="xyz.slienceme.dao.IUserDao">
    <!--配置查询所有-->
    <select id="findAll" resultType="xyz.slienceme.domain.User">
        select * from user
    </select>
</mapper>

2.2 简化

package xyz.slienceme.dao;
import org.apache.ibatis.annotations.Select;
import xyz.slienceme.domain.User;

import java.util.List;
/**
 * @Author Song
 * @Time : 2021/6/4  15:55
 * @File : IUserDao.java
 * @Software : IntelliJ IDEA
 *
 * 用户的持久层接口
 */
public interface IUserDao {
    /**
     * 查询所有操作
     * @return
     */
    @Select("select * from user")
    List<User> findAll();
}
<?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">
<!-- mybatis的主配置文件 -->
<configuration>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
        <!--配置事物的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!--配置连接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="********8XX"/>
            </dataSource>
        </environment>
    </environments>
<!--    指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
        如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
-->
    <mappers>
        <mapper class="xyz.slienceme.dao.IUserDao"/>
    </mappers>
</configuration>

Alt Text

文档信息

Search

    Table of Contents