【2023最新JavaWeb】Mybatis配置与操作MySQL(二)

本次学习目标

  • 同过上一篇的Maven学习,本次希望能够使用Maven管理项目。
  • 要求能够创建Mybatis工具类、核心配置文件的配置。
  • 最后能够通过Mybatis操作mysql数据库。

       【高启盛说】“这么多年,我从没想过自己的后路。”
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第1张图片


文章目录

  • 一、MyBatis简介?
    • 1.MyBatis是什么?
    • 2.JDBC的缺点、MyBatis的优化
  • 二、MyBatis的配置
    • 1.创建Maven工程
    • 2.导入对应坐标
    • 3.创建核心配置文件
    • 4.创建MyBatis工具类
  • 三、MyBatis操作数据库
    • 1.idea连接MySQL
    • 2.注解
    • 3.映射文件
  • 总结


一、MyBatis简介?

1.MyBatis是什么?

     MyBatis 本是 Apache 的一个开源项目iBatis,2010年迁移到了google,并改名为MyBatis 。2013年11月迁移到Github。

MyBatis 是一款优秀的持久层框架,主要用于简化JDBC 开发

  • JavaEE三层架构:表现层、业务层、持久层
    javaWeb开发必要的三层架构,后期会着重记录学习笔记。

2.JDBC的缺点、MyBatis的优化

     自从用了MyBatis后,说实话,JDBC配置要背的步骤太多太繁琐,大概有一下两点:

JDBC硬编码:

  • 注册驱动、获取连接字符多且繁琐,mysql还好说,换成其他关系型数据库就头疼。
  • SQL语句 语句后期改进麻烦,且容易有sql注入的风险

JDBC操作繁琐:

  • 手动设置参数
  • 手动封装结果集

MyBatis的优化

  • 硬编码可以配置到配置文件
  • 操作繁琐的地方mybatis都自动完成

话不多说MyBatis使用情况直接上图
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第2张图片

二、MyBatis的配置

1.创建Maven工程

     创建Maven工程无需太多言语,多创建几次就娴熟了,直接上图。
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第3张图片

2.导入对应坐标

Maven工程需要在pom.xml文件中进行导包,且只需要输入对应包的坐标即可,当然租后需要看对应工程导包是否一致,直接上图。
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第4张图片

    <dependencies>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.22version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.5version>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.13version>
            <scope>testscope>
        dependency>
    dependencies>

3.创建核心配置文件

编写 MyBatis 核心配置文件 – > 替换连接信息 解决硬编码问题
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第5张图片

mybatis-config.xml文件内容如下:


DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    settings>

    
    <typeAliases>
        <package name="com.example.pojo"/>
    typeAliases>

    <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:///mybatis"/> 
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            dataSource>
        environment>
    environments>

    
    <mappers>
        
        <package name="com.example.mapper"/>
    mappers>
configuration>

4.创建MyBatis工具类

     编写 MyBatis 工具类 – > 读取核心配置文件,辅助连接配置参数 解决硬编码问题
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第6张图片

MyBatis.java工具类如下

package com.example.util;

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;

public class MyBatisUtils {
    private static SqlSessionFactory factory = null;

    static {
        // 1.读取核心配置文件,获得输入流
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 2.创建会话工厂创建类
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 3.根据输入流,创建会话工厂
        factory = builder.build(inputStream);
    }

    /**
     * 功能:获取会话对象
     *
     * @param commit true为自动提交sql语句,false为手动,需要主动调用commit()
     * @return SqlSession 会话对象
     */
    public static SqlSession getSqlSession(boolean commit) {
        // 4.得到会话对象
        SqlSession sqlSession = factory.openSession(commit);
        return sqlSession;
    }
}

三、MyBatis操作数据库

1.idea连接MySQL

点击IDEA右边框的 Database ,在展开的界面点击 + 选择 Data Source ,再选择 MySQL
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第7张图片

在弹出的界面进行基本信息的填写
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第8张图片

最后鼠标右键点击选择如下,即可打开sql语句编辑文件,创建数据库和表等操作。
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第9张图片

准备环节
     数据库表(tb_user)及数据准备

-- 数据库名要和核心配置文件的数据库名相同
create database mybatis;
use mybatis;

-- 删除tb_brand表
drop table if exists tb_user;
-- 创建tb_brand表
create table tb_user
(
    -- id 主键
    id  int primary key auto_increment,
    -- 新名
    `name`  varchar(20),
    -- 年龄
    `age`   int,
    -- 性别
    sex   varchar(1),
    -- 职位
    position  varchar(100)
);
-- 添加数据
insert into tb_user (`name`, `age`, sex, position)
values ('高启强', 35, '男', '强盛集团董事长'),
       ('高启盛', 25, '男', '小灵通专卖店店长'),
       ('高启兰', 15, '女', '医生'),
       ('安欣',   35, '男', '京海市警察局刑警'),
       ('唐小龙', 35, '男', '强盛集团高管'),
       ('唐小虎', 35, '男', '强盛集团高管'),
       ('赵立冬', 51, '男', '京海市委常委政法委书记'),
       ('孟德海', 49, '男', '京海市副市长市公安局局长'),
       ('安长林', 50, '男', '京海市公安局常务副局长');

     创建如下图的项目结构
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第10张图片

2.注解

     MyBatis使用注解的方式进行操作数据库,是一种非常便捷且直观的速写方式。这种方式省略确了XML文件的配置,不过这种方式主要针对于比较简单的事务操作,且效率相对来水较高。但最后再做项目的时基本不怎么建议使用注解的方式进行开发。格式:@Select(“select * from tb_user”)

UserMapper接口文件,也是三大架构中的持久层

【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第11张图片

     然后在测试类中进行测试,首先需要获取MyBatis工具类提供的会话工厂方法,然后根据会话工厂得到UserMapper代理对象,最后用代理对象进行事务操作。
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第12张图片

结果如下:
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第13张图片

3.映射文件

     XML书写SQL语句相对于注解的方式,多了动态sql的书写,其中有if、foreach、choose、where、set等。当然还能将查询结果映射到pojo的实体类中。
首先最好安装一下MyBatis插件
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第14张图片

     然后创建实体类映射文件,映射文件创建在如下图,且报名和类名都要和UserMapper接口保持统一。
在这里插入图片描述

     XML书写格式如下,其中具体要求根据对应注释看就可以。


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.example.mapper.UserMapper">
    
    <update id="DeleteByIds">
        delete from tb_user where id in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        foreach>
    update>
mapper>

     最后测试类进行测试
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第15张图片

     tb_user数据表经过批量删除数据后的查询结果如下
【2023最新JavaWeb】Mybatis配置与操作MySQL(二)_第16张图片

总结

     对于MyBatis的使用情况来说,具体总结有以下两点:

  1. MyBatis框架的与JDBC相比,代码量减少了50%左右;且是一个小巧、简单易学的持久层框架;其中xml中数据sql不经可以达到动态,灵活的效果,还能更好的和java代码进行分离书写,方便后期管理和优化。
  2. MyBatis主要专注于SQL语句,是一个非常灵活的DAO层架构处理方案。而且对于性能要求高,或者需求变化较多的项目,MyBatis将是一个不错的选择。

你可能感兴趣的:(javaWeb,mybatis,maven)