当前位置:   article > 正文

mybatis学习文档_unknown database 'mybatis

unknown database 'mybatis

mybatis-9.28

环境:

  • JDK1.8

  • mysql 8.0.16

  • maven3.6.1

  • IDEA

回顾:

  • JDBC
  • mysql
  • jave基础
  • Maven
  • junit

1.简介

1.1 什么是mybatis

​ mybatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。

  • MyBatis 是一款优秀的持久层框架

  • 支持自定义 SQL、存储过程以及高级映射

  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

如何获取mybits:

  • maven仓库

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • Github:

  • 中文学习文档:https://mybatis.net.cn/

1.2 持久化

  • 数据持久化

    • 数据持久化指程序的数据在持久状态与瞬时状态转化的过程

    • 内存:断电即失

    • 数据库(jdbc):io文件持久化

  • 为什么需要持久化

    • 内存太贵了

    • 有些对象不能缺失(如银行的账户和密码)

1.3 持久层

​ dao层、service层、controller层…

  • 完成持久化工作的代码块

  • 界限十分明显

1.4 为什么需要mybatis

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

2.第一个mybatis程序

步骤

在这里插入图片描述

2.1 搭建环境

2.1.1 搭建数据库

create database 'mybatis';
use mybatis;
CREATE TABLE user(
id int not null PRIMARY KEY,
name VARCHAR(20) DEFAULT NULL,
psw VARCHAR(20) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO USER VALUES(1,'李白','123'),(2,'杜甫','234'),(3,'苏轼','333');

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.1.2 新建项目

  1. 新建一个普通的maven项目

  2. 删除一个src目录(父工程)

  3. 导入maven依赖

     <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.6</version>
        </dependency>
      </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

2.2 创建一个模板

  • 编写mybatis的核心配置文件

    <?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="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <!--每一个mapper.xml都需要在mybatis核心配置文件中注册-->
      <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
      </mappers>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 编写mybatis工具

    public class MybatisUtil {
         
        private static SqlSessionFactory sqlSessionFactory;
        static {
         
            try {
         
                //使用mybatis的第一步,获取sqlSessionFactory对象
                String resource = "src\\main\\resources\\mybatis-config.xml";
                InputStream inputStream =  Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
         
                e.printStackTrace();
            }
    
        }
    //    既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    //    SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        public SqlSession getsqlSession(){
         
            return sqlSessionFactory.openSession();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

2.3 编写代码

  • 实体类

    public class User {
         
        private int id;
        private String name;
        private String psw;
    
        public User() {
         
        }
    
        public User(int id, String name, String psw) {
         
            this.id = id;
            this.name = name;
            this.psw = psw;
        }
    
        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 getPsw() {
         
            return psw;
        }
    
        public void setPsw(String psw) {
         
            this.psw = psw;
        }
        @Override
        public String toString() {
         
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", psw='" + psw + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
  • Dao接口

    public interface UserDao {
         
        List<User> getUserList();
    }
    
    • 1
    • 2
    • 3
    • 4
  • 接口实现类由原来的UserDaoImpl转变为一个Mapper配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!
    • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/67843
推荐阅读
相关标签
  

闽ICP备14008679号