Java0基础_day22_JDBC增强版_Mybatis框架

本文介绍了Mybatis作为JDBC增强版的持久层框架,详细讲解了Mybatis的概述、快速上手步骤、核心模板动态代理以及配置文件的详细解析。内容涵盖了从数据库准备、依赖引入、实体类创建到Dao接口、映射文件和主配置文件的配置。还讨论了Mybatis的事务管理、日志开启、PageHelper翻页插件以及动态SQL的使用。文章总结了Mybatis的学习要点,强调了框架的规则性和配置的重要性。
摘要由CSDN通过智能技术生成

标签:Mybatis、JDBC、Maven


1.Mybatis概述

本部分将简要介绍Mybatis,特别是其核心的构建。

  • Mybatis是什么?

Mybaits由apache→google→github,原名ibatis,它是基于java的持久层框架,可以看成是我们前面学习的jdbc 的增强版,核心概念包括Daos接口和Mysqlmaps映射文件。开发人员只需要写好sql语句,交给Mybatis处理,然后就可以得到想要的List集合/java对象,非常方便!

  • 为什么需要Mybatis?

前面已经说了jdbc操作数据库,为何需要多一个增强版的Mybatis呢?因为他有如下特点:

第一个:将jdbc中重复的代码,如创建对象、接入连接、结果封装、销毁对象等封装了。

第二个:提供了将数据库表查询的结果封装为java对象的能力

第三个:将六步法简化为建立连接【主配置文件】、获取对象【动态代理】、调用方法三步

  • 框架是什么东西?

框架就类似于申请表,核心骨架已经订好了,哪个位置怎么写?写多少?都已经订好了,我们只需要按照规定使用即可。其本质是内部已经封装了许多方法,这些方法以前可能需要我们自己手动实现,现在只需按照“使用说明书”提供想要的需求即可。

值得注意的是,每一个框架都是针对具体的业务场景进行抽象和封装的,故不存在万能的框架。

  • 软件三层架构模式

在软件开发中,我们将其分为用户界面层[表示层]、业务逻辑层、数据访问层[持久化层]。

表示层controller :与用户打交道,主要是接收用户输入的数据,向用户返回输出的结果

       典型框架:SpingMVC

业务逻辑层Logic Layer:中间人,包括接收数据,检查数据,计算,调用数据库

        典型框架:Spring

持久化层dao :主要是对数据库的crud操作,将结果交给上层。

        典型框架:Mybatis


2.Mybatis快速上手

在Mybatis中仍需要Maven进行监管,故相关配置文件也需要加入。

2.1 数据库表student.sql准备

2.2 在pom.xml中引入Mybatis依赖,引入Mysql驱动,加入单元测试junit

<dependencies>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
</dependency>
<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.25</version>
</dependency>
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>RELEASE</version>
      <scope>test</scope>
</dependency>

2.3 创建实体Student类,对应student表的一行数据[java对象→表]

2.4 创建持久层的Dao接口,定义方法

public interface StudentDao {
    List<Student> selectLikefirst(String name);
}

2.5 创建sql映射文件,如StudentDao.xml

要求:放在同名的接口目录下,名字与接口一致,格式为xml。

2.6 创建Mybatis主配置文件,如Mybatis.xml,提供了数据库连接信息和sql映射文件的位置

2.7 【创建使用Myapp类,写入主函数】或者【进行单元测试配置

【注意】二者都是用了Sqlsession接口来执行sql语句。

2.8 成功

【注意1】如果是采用的insert、update、delete语句,由于Mybatis的opensession方法默认是不自动提交事务,故若想要提交,可:

法1:调用opensession()方法时,参数写true;

法2:最后在单元测试方法后加上sqlsession.commit();

【注意2】不难发现,本次实验并未用到StudentDao接口中的方法,也没有实现其方法,因此不是正规的Mybatis,那么正规的是怎么样的呢?

换言之,怎么实现方法呢?以下分别从手动实现和Mybatis自动实现讲起。


3.Mybatis标准模板_动态代理

首先讲一下怎么手动实现:

从以前的知识,我们知道,定义了StudentDao接口后,我们必须手动实现方法,然后在主函数中调用该方法,因此:

第一步:实现StudentDao接口的方法:

public class implStudentDao implements StudentDao {
    SqlSession sqlsession = null;
    List<Student>   list = null;
    @Override
    public List<Student> selectStudents() {
        //获取sqlsession对象;
        try {
            sqlsession =  datautil.getsqlsession();
        //
            String sqlId = "com.zhangsan.Dao.StudentDao.selectStudents";
            //执行sql语句
            list  = sqlsession.selectList(sqlId);
            for(Student stu:list){
                System.out.println(stu);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(sqlsession!=null){
                sqlsession.close();
            }

        }
        return list;
    }

    @Override
    public int insertStudents(Student stu) {
        int count 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值