MyBatis----01----MyBatis简介&&MyBatis搭建

目录

  • MyBatis----01
    • 1. MyBatis简介
      • 1.1 软件开发三层架构
      • 1.2 什么是框架?
      • 1.3 常见的框架
      • 1.4 MyBatis介绍
      • 1.5 MyBatis是一款半自动ORM框架
    • 2. MyBatis搭建
      • 2.1 准备数据库
      • 2.2 添加测试数据
      • 2.3 创建Maven工程
      • 2.4 创建MyBatis主配置文件
      • 2.5 创建实体类映射表
      • 2.6 创建Mapper接口
      • 2.7 创建xxxMapper.xml配置
      • 2.8 将xxxMapper.xml注册到主配置文件
      • 2.9 其他配置
      • 2.10 代码测试

MyBatis----01

1. MyBatis简介

1.1 软件开发三层架构

MyBatis----01----MyBatis简介&&MyBatis搭建_第1张图片

     MyBatis作用于持久层,属于数据持久化框架。

1.2 什么是框架?

     简单来说框架可以理解为一个半成品项目,已经有人完成好了一部分功能,我们只需要在其基础上完成我们需要做的业务逻辑即可,将重复的代码抽取出来,让程序员把精力专注于业务逻辑之上。

1.3 常见的框架

     Java的世界中存在着无数的框架,每个框架都为了解决某一领域的问题而存在的。

  • 持久层框架:专注于解决持久化,例如:Hibernate|MyBatis|JPA规范
  • 表现成框架:专注于解决与用户交互,例如:struts2|SpringMVC
  • 全栈框架:能在各层都发会作用的框架,例如:Spring

     目前市面上流行的框架组合:SSM(Spring | SpringMVC | MyBatis),早年曾经流行SSH(Spring | Strusts2 | Hiberbate),SSH已经过时了。

1.4 MyBatis介绍

      MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
  • iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
  • 当前,最新版本是MyBatis 3.5.5 ,其发布时间是2020年6月4日。

      特点:

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

1.5 MyBatis是一款半自动ORM框架

MyBatis----01----MyBatis简介&&MyBatis搭建_第2张图片

     ORM是能够完全面向对象操作数据库的框架,因为SQL语句完全由Hibernate负责生成,我们只需要负责面向对象的调用API操作数据库即可,不需要写SQL;
      MyBatis是半自动的ORM框架,因为SQL语句还是由开发人员手写,MyBatis负责封装结果到对象中,以及从对象中提取参数。

Hibernate与MyBatis:

     Hibernate缺点:

  • 运行效率低,内存占用高->功能强大
  • 因为Hibernate对于持久层的封装过于完整(甚至帮我们书写SQL)导致sql语句优化不容易进行,不适用于数据量大的大型项目

      MyBatis优点:

  • MyBatis灵活,因为SQL语句还是由我们负责书写,书写到XML中
  • SQL语句与程序分离,降低了耦合度,便于管理
  • 执行效率较高

2. MyBatis搭建

2.1 准备数据库

CREATE TABLE t_user(
	id INT PRIMARY KEY,
	NAME VARCHAR(255) NOT NULL,
	PASSWORD VARCHAR(255) NOT NULL
)

2.2 添加测试数据

INSERT INTO t_user VALUE
(1,'Tom','1234'),(2,'Jerry','1234'),
(3,'Jack','1234'),(4,'Rose','1234')

2.3 创建Maven工程

     引入依赖

    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>2.0.1version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.21version>
        dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.13version>
            <scope>testscope>
        dependency>

    dependencies>

2.4 创建MyBatis主配置文件



<configuration>
    
    <environments default="development">
        
        <environment id="development">
            
            <transactionManager type="JDBC"/>
            
            <dataSource type="POOLED">
                
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="hanjuechen"/>
            dataSource>
        environment>
    environments>
    <mappers>
        
    mappers>
configuration>

2.5 创建实体类映射表

public class User {

    private Integer id;
    private String name;
    private String password;

    public User() {
    }

    public User(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

2.6 创建Mapper接口

public interface UserMapper {

    //查询所有用户
    List<User> findAll();

}

2.7 创建xxxMapper.xml配置

MyBatis----01----MyBatis简介&&MyBatis搭建_第3张图片




<mapper namespace="com.leo.mapper.UserMapper">
    
    <select id="findAll" resultType="com.leo.domain.User">
    select * from t_user
  select>
mapper>

2.8 将xxxMapper.xml注册到主配置文件

     在mybatis-config.xml配置文件末尾注册:

    <mappers>
        
        <mapper resource="com/leo/mapper/UserMapper.xml"/>
    mappers>

2.9 其他配置

     为了让src/main/java目录中的xml文件能够作为资源文件编译输出,在pom.xml中加入如下配置:

<build>
        
        <resources>
            <resource>
                
                <directory>src/main/resourcesdirectory>
                
                <includes>
                    
                    <include>**/*.*include>



                includes>
                
                <filtering>falsefiltering>
            resource>
            
            <resource>
                
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.*include>
                includes>
                
                <excludes>
                    <exclude>**/*.javaexclude>
                excludes>
                <filtering>falsefiltering>
            resource>
        resources>
    build>

2.10 代码测试

public class UserMapperTest {
    @Test
    public void testFindAll(){
    	//定义配置文件路径
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
        	//加载配置文件
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //根据配置文件创建SessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获得SqlSession
        SqlSession session = sqlSessionFactory.openSession();
        //获得UserMapper接口的实现类
        UserMapper mapper = session.getMapper(UserMapper.class);
        //调用UserMapper方法,执行xml中定义的SQL语句
        List<User> list = mapper.findAll();
        //打印list: list.sout
        System.out.println(list);

    }
}

你可能感兴趣的:(SSM框架学习笔记,java,数据库,mybatis,mysql,后端)