Mybatis框架-保姆级详解(一)

         在聊Mybatis框架之前,我们应该先了解一下什么是框架?框架是一个提供了可重用的公共结构的半成品,完成了软件开发过程中的通用操作,从而程序员只需很少或者不用进行加工就能够实现特定的功能,从而简化了开发人员在 软件开发过程中的步骤,提高了开发效率

1.1 常用框架:

常用框架

MVC框架

持久层框架

胶水框架

Struts2Opache DbutilsSpring
SpringMVCHibernate
Spring JPA
Mybatis

  • MVC框架:简化了Servlet的开发步骤
  • 持久层框架:完成了数据库操作的框架,相当于JDBC的操作

1.2 Mybatis框架及ORM

        mybatis框架:是一个开源的数据持久层框架,它内部封装了通过jdbc访问数据库的操作,支持普通的Sql查询,存储过程和高级映射,几乎消除了所有JDBC代码和参数的手工设置以及结果集的检索,mybatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,可以再配置文件中,实现SQL的灵活配置,这样的好处是将SQL与程序代码剥离,可以在不修改代码的情况下,直接在配置文件中修改SQL

        ORM:(Object Relatiional Mapping)对象关系映射,是一种数据持久化的技术,它在对象模型和关系数据库之间建立起了对应关系,并且提供了一种机制,通过JavaBean对象操作数据库表中的数据,如图1.4,通过映射文件的配置,实现对象的持久化

1.3 mybatis的特点

  1. 支持自定义的SQL的存储过程
  2. 对原有的JDBC进行了封装,几乎消除了所有的JDBC代码,让开发者只需关注SQL本身
  3. 支持xml和注解配置方式,自动完成ORM操作,实现结果映射

1.4 Mybatis框架的部署 

        1.4.1 创建maven项目:

                file--newproject--maven(勾选Creat from archetype)使用框架--next-配置好相关路径--finish--等待项目部署完成

 

 1.4.2 补全maven工程的项目结构:

                在main包下,创建一个名字为java的包,并将这个包设置为Sources Root(选中包右键--Make Directory as --Sources Root);在创建一个名为resources的包,并将这个包设置为resourcesRoot(选中包右键--Make Directory as --resourcesRoot)

 创建好的maven项目结构如下:

1.4.3 添加mysql依赖

        由于创建的是maven工程项目,所以不需要手动下载所需要的jar包,只需要在pom.xml文件中添加mysql的jar依赖即可

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.44</version>
    </dependency>

1.4.4 添加mybatis依赖

 <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>

由于我们选择了AUTO_import,所以添加依赖后, 打开IDEA右侧工具栏,找到maven poject 在dependencies中可以看到自动下载的jar包

1.4.5配置数据库连接(创建mybatis配置文件):

        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>

</configuration>

        在 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>
    <environments default="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/studentinfo"/>
                <property name="username" value="root"/>
                <property name="password" value="990501"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

1.4.5 创建数据库studentinfo

        在正式使用mybatis框架之前我们首先要有一个数据表,本示例为对学生表的增加和删除操作,所以在此我们创建了一个学生表(tb_students)

CREATE DATABASE /*!32312 IF NOT EXISTS*/`studentinfo`

USE `studentinfo`;

/*Table structure for table `tb_student` */

DROP TABLE IF EXISTS `tb_student`;

CREATE TABLE `tb_student` (
  `sid` int NOT NULL,
  `stu_num` char(5) DEFAULT NULL,
  `stu_name` varchar(20) DEFAULT NULL,
  `stu_gender` varchar(20) DEFAULT NULL,
  `stu_age` int DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.4.6 创建实体类

        创建实体类,并使用lombok依赖,对idea引入lombok支持;lombok作用可以简化实体类的代码,减少了getter、setter、以及构造器的定义,让代码更简洁。

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
      <scope>provided</scope>
    </dependency>

       添加IDE工具对Lombok的支持

         别写实体类,并使用Lombok

package com.qhit.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * Description: mybatis01
 * Created by WuHuaSen .
 * Created Date:  2022/3/30 13:32
 * Version:  V1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
    public class Student {
        private int StuId;
        private  String StuNum;
        private  String StuName;
        private String StuGender;//性别
        private int StuAge;




}

1.4.7 创建接口(Dao包),定义操作方法

        接口中定义了两种操作方法InsertStudent(添加) 、DeleteStudent(删除)

package Dao;


import com.qhit.entity.Student;

/**
 * Description: NewSsm
 * Created by WuHuaSen .
 * Created Date:  2022/3/29 19:58
 * Version:  V1.0
 */
public interface StudentDao {
    public int InsertStudent(Student student);
    public int DeleteStudent(int StuId);
}

1.4.8 创建mapper映射文件

        mapper映射文件,相当于接口的实现类。步骤步骤如下:

  • 在resources目录下,新建名为“mappers”文件夹
  • 在mappers文件夹下新建名为“StudentMapper”.xml的映射文件,可以根据模板创建
  • 在映射文件中对Dao中定义的方法进行实现
  • 将映射文件添加到主配置文件中(mybatis-config.xml)

 mapper模板:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">

  </mapper>     

映射文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Dao.StudentDao">
    <insert id="InsertStudent">
    INSERT INTO  tb_student(sid,stu_num,stu_name,stu_gender,stu_age)VALUES (#{StuId},#{StuNum},#{StuName},#{StuGender},#{StuAge});
</insert>
    <delete id="DeleteStudent">
        DELETE FROM  tb_student WHERE sid=#{StuId};
    </delete>
</mapper>

将映射文件添加到主配置文件中:

<?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">
        <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/studentinfo"/>
                <property name="username" value="root"/>
                <property name="password" value="990501"/>
            </dataSource>
        </environment>
    </environments>
<!--将映射文件添加到主配置文件中-->
    <mappers>
        <mapper resource="StudentDaoMapper.xml"></mapper>
    </mappers>
</configuration>

二:创建单元测试类

        2.1 添加Junit依赖

在pom.xml添加Junit依赖

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

 在pom.xml添加hamcrest-core依赖   

<dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <version>1.3</version>
    </dependency>

   2.2创建测试类

        在被测试类名之后alt+insert选择Junit-Test,选择junit4,勾选要测试的方法

 2.3 创建会化工厂,测试InsertStudent方法

package Dao;

import com.qhit.entity.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.InputStream;

import static org.junit.Assert.*;

/**
 * Description: mybatis01
 * Created by WuHuaSen .
 * Created Date:  2022/3/30 16:12
 * Version:  V1.0
 */
public class StudentDaoTest {
    @Test
    public void insertStudent() throws Exception {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //创建会话工厂
        SqlSessionFactory factory = builder.build(is);
        //会话连接
        SqlSession sqlSession = factory.openSession();
        //通过对象获取Dao对象、
        StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
        //测试StudentDao方法
        int i = studentDao.InsertStudent(new Student(3,"1001","张三","男",21));
        //手动提交
        sqlSession.commit();
        System.out.println(i);
    }

    @Test
    public void deleteStudent() throws Exception {
    }

}

         此时控制台输出1则添加成功;0则添加失败,这里手动提交了会话,如果不提交会话则会出现控制台添加成功,但是数据库中的数据未添加的情况~

       CRUD操作会在后续博文中持续更新~~

        上述示例打印结果如下:

         

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暇光曙墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值