Mybatis框架(一)

16 篇文章 0 订阅
6 篇文章 0 订阅

1、什么是框架

框架是整个或者部分系统的可重用设计,表现为一组抽象的构件 以及 构件实例间的交互的方法。

另外一种定义认为,框架是可被应用开发者定制的应用骨架。

前者是从应用方面而后者是从目的方面给出的定义。

简而言之,框架就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单的说就是使用别人搭好的舞台,开始你的表演。而且,框架一般是成熟的,不断升级的软件。

他就是一套解决方案,不同的框架解决的是不同的问题。Mybatis——> 持久层 ,SpringMVC——>表像层

2、什么是三层架构

DAO层_数据访问层

Service层_服务层

Controller层_控制层

  • 表现层——> 用于展示数据==> SpringMVC表现层框架
  • 业务层——> 处理业务需求
  • 持久层——> 完成持久化的工作 ——> 和数据库交互==> Mybatis持久层框架
    • 持久化 就是将程序的数据在持久状态和瞬时状态转化的过程
    • 内存:断电即失
    • 持久化方式: 数据库(JDBC)持久化,<—— io文件的持久化
  • 为什么要持久化
    • 有一些对象,不能让他丢掉
    • 内存太贵——价格高昂
      在这里插入图片描述

3、持久层的解决方案

  • JDBC技术
    • Connection 连接
    • PreparedStatement
    • ResultSet
  • Spring 的 Jdbc Template
    • Spring中对jdbc 的简单封装
  • Apache 的DBUtils
    • 他和Spring 的Jdbc Template很像,也是对JDBC 的简单封装
      以上都不是框架,JDBC是一种规范,Spring的 Jdbc Template 和 Apache 的DBUtils 都是工具类

4、Mybatis 框架概述

Mybatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 jdbc,是开发者只需要关注SQL语句本身,而不需要花费大量的精力 去处理加载驱动,创建连接,创建statement 等 繁杂的过程
mybatis 通过 XML 或者 注解 的方式将要执行的 各种statement 配置起来 ,并通过 java 对象 和 statement 中的SQL的动态参数进行映射 生成最终的执行的SQL 语句,最后由mybatis 框架执行SQL 并将结果映射为 java 对象并返回。
采用 ORM 思想 解决了实体 和数据库 映射 的问题,实现了对结果级的封装 ,对jdbc 进行了封装,屏蔽了 jdbc api 底层的访问细节,使我们不用 与 JDBC API 打交道,就可以完成对数据库的持久化操作。
ORM : `Object Relational Mappging 对象关系映射
简单的说就是把数据库表 和实体类 以及 实体类的属性 对应起来,让我们可以通过操作实体类来实现操作数据库表
实体类中的属性 和 数据库表 的字段名称保持一致。当然后期也可以 不需要 使实体类中的属性 和 数据库表 的字段 保持一致,需要借助
(1)SQL中起别名的方式 (2)结果集映射ResultMap

5、Mybatis入门

环境搭建_——> 导入 mybatis ——> 编写代码 ——> 测试 —— > 工具类 ——> 配置文件 ——> 实体类 ——> 接口 —— > Mapper.xml ——> 测试类 ——> Meven 解决资源导出问题
新建项目
在这里插入图片描述
文档结构
在这里插入图片描述

pom.xml 中导入mybatis依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>day_lswMybatis</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!--        父工程-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!--        导入依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>2.13.3</version>
        </dependency>
    </dependencies>
    <properties>
        <!-- 设置默认编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!--在build中配置resources,来防止我们资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

mybatis-config.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>
<!-- 引入外部配置文件 -->
    <properties resource="db.properties"/>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--配置连接数据库的基本信息-->
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="${username}"></property>
                <property name="password" value="${password}"></property>
            </dataSource>
        </environment>


    </environments>
<!--    每一个Mapper.xml 都需要在mybatis 核心配置文件中注册 -->
    <mappers>
        <mapper class="com.lsw.dao.UserDao" />
    </mappers>
</configuration>

db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/eesy_mybaits?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
username=root
password=root

编写工具类

创建工厂,方便复用sqlSessionFactory

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

实体类

public class User {
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
    private int id;
    private String name;
    private  String pwd;

}

UserDao接口

public interface UserDao {
    List<User> getListUser();
}

Mapper 数据映射文件
实现POJO与SQL之间的映射关系

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--核心配置文件-->
<mapper namespace="com.lsw.dao.UserDao">
   <select id="getListUser" resultType="com.lsw.pojo.User">
       select  * from user;
   </select>
</mapper>

测试类

public class Test {
    @org.junit.Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> user = mapper.getListUser();
        for(User u : user){
            System.out.println(u);
        }
        //关闭工厂
        sqlSession.close();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值