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

本次学习目标

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

       【高启盛说】“这么多年,我从没想过自己的后路。”
请添加图片描述



一、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使用情况直接上图
在这里插入图片描述

二、MyBatis的配置

1.创建Maven工程

     创建Maven工程无需太多言语,多创建几次就娴熟了,直接上图。
在这里插入图片描述

2.导入对应坐标

Maven工程需要在pom.xml文件中进行导包,且只需要输入对应包的坐标即可,当然租后需要看对应工程导包是否一致,直接上图。
在这里插入图片描述

    <dependencies>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.22</version>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.创建核心配置文件

编写 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>
    <settings>
        <!-- 在控制台显示SQL语句 -->
        <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"/> <!-- mybatis 是数据库名,根据自己数据库名改-->
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载其他映射文件 -->
    <mappers>
        <!--加载sql映射文件-->
        <package name="com.example.mapper"/>
    </mappers>
</configuration>

4.创建MyBatis工具类

     编写 MyBatis 工具类 – > 读取核心配置文件,辅助连接配置参数 解决硬编码问题
在这里插入图片描述

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
在这里插入图片描述

在弹出的界面进行基本信息的填写
在这里插入图片描述

最后鼠标右键点击选择如下,即可打开sql语句编辑文件,创建数据库和表等操作。
在这里插入图片描述

准备环节
     数据库表(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, '男', '京海市公安局常务副局长');

     创建如下图的项目结构
在这里插入图片描述

2.注解

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

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

在这里插入图片描述

     然后在测试类中进行测试,首先需要获取MyBatis工具类提供的会话工厂方法,然后根据会话工厂得到UserMapper代理对象,最后用代理对象进行事务操作。
在这里插入图片描述

结果如下:
在这里插入图片描述

3.映射文件

     XML书写SQL语句相对于注解的方式,多了动态sql的书写,其中有if、foreach、choose、where、set等。当然还能将查询结果映射到pojo的实体类中。
首先最好安装一下MyBatis插件
在这里插入图片描述

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

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- 地址必须与mapper一致 -->
<mapper namespace="com.example.mapper.UserMapper">
    <!--
        collection 属性:
            mybatis会将数组参数,封装为一个Map集合。
            默认:array = 数组
            使用@Param注解改变map集合的默认key的名称
        item 属性:本次迭代获取到的元素。
        separator 属性:集合项迭代之间的分隔符。`foreach` 标签不会错误地添加多余的分隔符。也就是最后一次迭代不会加分隔符。
        open 属性:该属性值是在拼接SQL语句之前拼接的语句,只会拼接一次
        close 属性:该属性值是在拼接SQL语句拼接后拼接的语句,只会拼接一次
    -->
    <update id="DeleteByIds">
        delete from tb_user where id in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </update>
</mapper>

     最后测试类进行测试
在这里插入图片描述

     tb_user数据表经过批量删除数据后的查询结果如下
在这里插入图片描述

总结

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

  1. MyBatis框架的与JDBC相比,代码量减少了50%左右;且是一个小巧、简单易学的持久层框架;其中xml中数据sql不经可以达到动态,灵活的效果,还能更好的和java代码进行分离书写,方便后期管理和优化。
  2. MyBatis主要专注于SQL语句,是一个非常灵活的DAO层架构处理方案。而且对于性能要求高,或者需求变化较多的项目,MyBatis将是一个不错的选择。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提到的项目架构是基于Java语言的B/S架构,使用了JSP和ssm框架。其中,前端技术包括HTML、CSS、JS、JQuery等,后端技术包括MyBatis作为持久层框架。数据库使用MySQL5.5/5.7/8.0版本,运行服务器可以选择Tomcat7.0/8.0/8.5/9.0等版本。该项目实现了购物车功能,可以区分管理员用户和普通用户。普通用户可以进行注册登录,浏览网站,查看商品和详情,加入购物车,下单,查询订单,修改个人信息等操作。管理员用户则可以进行水果基本信息的维护、分类管理、订单管理、用户管理等功能。这个项目可以使用idea开发工具进行开发和运行,不支持MyEclipse和eclipse运行。如果想在eclipse中运行,需要进行转换。你可以从https://www.jiuniao.com/code/13412.html获取该项目的代码。 #### 引用[.reference_title] - *1* [基于ssm的校园手物品交易平台(idea+spring+springmvc+mybatis+jsp)](https://blog.csdn.net/qq_43485489/article/details/126461870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [基于javaweb+mysql的在线水果商城系统(java+JSP+Spring+SpringMVC +MyBatis+html+mysql)](https://blog.csdn.net/m0_71497271/article/details/125030700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值