• MyBatis 9.28 开发环境


    环境:
    JDK1.8
    Mysql 5.7
    maven 3.6.1
    IDEA

    回顾:
    JDBC
    Mysql
    Java基础
    Maven
    Junit

    SSM框架:配置文件。最好的方式:看官网

    MyBatis官方中文文档
    https://mybatis.org/mybatis-3/zh/index.html

    1. 简介

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

    MyBatis百度百科
    https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin

    • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
    • 2013年11月迁移到Github。

    如何获得Mybatis?

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.10</version>
    </dependency>
    
    
    1.2 持久化

    数据持久化

    • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
    • 内存:断电即失
    • 数据库(jdbc),io文件持久化
    • 生活:冷藏,罐头
    为什么需要持久化?
    • 有一些对象,不能让他丢掉
    • 内存太贵了
    1.3 持久层

    Dao层,Service层,Controller层...

    • 完成持久化工作的代码块
    • 层界限十分明显
    1.4 为什么需要MyBatis?
    • 帮助程序猿将数据存入到数据库中。
    • 方便
    • 传统的JDBC代码太复杂了。简化。框架。自动化。
    • 不用MyBatis也可以。更容易上手。技术没有高低之分
    • 优点
      • 简单易学
      • 灵活
      • sql和代码的分离,提高了可维护性。
      • 提供映射标签,支持对象与数据库的ORM字段关系映射。
      • 提供对象关系映射标签,支持对象关系组建维护。
      • 提供xml标签,支持编写动态sql。

    2. 第一个MyBatis程序

    思路:搭建环境 -> 导入MyBatis -> 编写代码 -> 测试

    2.1 搭建环境

    搭建数据库

    CREATE DATABASE mybatis;
    USE mybatis
    
    CREATE TABLE `user` (
    	`id` INT(20) NOT NULL PRIMARY KEY,
    	`name` VARCHAR(30) DEFAULT NULL,
    	`pwd` VARCHAR(30) DEFAULT NULL
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
    
    INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
    (1,'狂神','123456'),
    (2,'张三','123456'),
    (3,'李四','654321');
    

    新建项目

    1. 新建一个普通的maven项目
    2. 删除SRC目录
    3. 导入maven依赖
    <?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>com.luna</groupId>
        <artifactId>MyBatisTest</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!-- 导入依赖 -->
        <dependencies>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
            <!-- junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
    </project>
    

    对于maven中pom.xml依赖报红问题
    https://blog.csdn.net/jbossjf/article/details/121140721

    2.2 创建一个模块
    • 编写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>
        <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?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
    
    </configuration>
    
    package com.luna.utils;
    
    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 java.io.IOException;
    import java.io.InputStream;
    
    //sqlSessionFactory
    public class MybatisUtils {
        private static SqlSessionFactory sqlSessionFactory;
        static {
            try {
                // 使用MyBatis第一步:获取sqlSessionFactory对象
                String resource = "mybatis_config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    
        // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
        // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    
    2.3 编写代码
    • 实体类
    package com.luna.pojo;
    
    // 实体类
    public class User {
        public int id;
        public String name;
        public String pwd;
    
        public User() {
        }
    
        public User(int id, String name, String pwd) {
            this.id = id;
            this.name = name;
            this.pwd = pwd;
        }
    
        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;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", pwd='" + pwd + '\'' +
                    '}';
        }
    }
    
    • Dao接口
    • 接口实现类
  • 相关阅读:
    108.将有序数组转换成二叉搜索树
    剑指Offer 09.用两个栈实现队列
    215.数组中的第K个最大元素
    AcWing 845.八数码
    1.两数之和
    迷宫问题
    倒计时
    Redis 红包
    Redis
    EF Api 全套
  • 原文地址:https://www.cnblogs.com/luna2333/p/16679217.html
Copyright © 2020-2023  润新知