JavaWeb(七)

news2025/2/24 15:13:48

一、Mybatis概念

MyBatis 是一款优秀的持久层框架,用于简化JDBC开发,解决了原生JDBC硬编码和手动封装结果集的问题。

JavaEE的三层架构分为Controller(表现层)、Service(业务层)、Mapper(持久层)。

持久层负责将数据保存到数据库的那一层代码。使用了Mybatis框架我们会将操作数据库的Java代码作为持久层。

二、Mybatis快速入门

2.1、搭建环境

2.1.1、创建user表,添加数据
create database mybatis;
use mybatis;

drop table if exists tb_user;

create table tb_user(
	id int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	gender char(1),
	addr varchar(30)
);

INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
2.1.2、创建模块

 创建day04-mybatis模块,在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标

<dependencies>
    <!--mybatis 依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <!--mysql 驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.46</version>
    </dependency>

    <!--junit 单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
</dependencies>
2.1.3、 创建包结构

 在 com.practice.pojo 包下创建和表对应的 User类

public class User {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;
    
    //省略了 setter 和 getter
}
2.1.4、编写核心配置文件

在resources中编写mybatis-config.xml配置文件,配置数据库的连接信息,在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="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--2 加载Mapper接口和SQL语句,将给的例子注释掉。后面第三大步中配置-->
    <!--<mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>-->
</configuration>
2.1.5、编写mapper接口和SQL语句

1、在mapper包中编写UserMapper接口,在接口中编写查询所有的方法,并配置SQL语句

public interface UserMapper {

    /**
     * 查询所有用户信息
     * @Select:定义查询语句的注解,参数为SQL语句
     */
    @Select("select * from tb_user")
    List<User> selectAll();
}

 2、在mybatis-config.xml核心配置文件中加载映射配置文件

<!--加载映射配置文件-->
<mappers>
    <!--通过扫包加载该包下和所有mapper接口和接口中的SQL语句-->
    <package name="com.itheima.mapper"/>
</mappers>

核心配置文件中的内容,在使用spring框架后可以全部写到spring中的配置文件

2.1.6、单元测试使用mybatis执行查询
public class MybatisTest {

    @Test
    public void testSelectAll() throws IOException {
        //1 加载核心配置文件,获取 SqlSessionFactory对象,mybatis官网复制即可
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2 获取 SqlSession 对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3 获取Mapper接口代理对象。
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //4 执行方法,获取结果
        List<User> list = userMapper.selectAll();
        //5 处理结果,释放资源
        list.forEach(user -> System.out.println(user));
        sqlSession.close();
    }
}

 2.1.7、快速入门总结

步骤:

环境搭建--->核心配置文件--->Mapper接口和SQL--->单元测试方法

核心配置文件作用:

1、配置连接数据库环境信息。

​ 2、通过扫包加载和mapper接口和SQL

三、核心配置文件细节

3.1、核心配置文件标签顺序

3.1.2、environments环境配置介绍

<!--environments:用于配置多种开发环境
        default="development" :表示使用下面id="development"的环境配置 -->
<environments default="development">
    <!--environment id="development" :定义连接数据库的环境,id表示该配置的唯一标识。这个标签可以出现多次-->
    <environment id="development">
        <!--事务管理器,取值如下:
                JDBC :开启事务管理,推荐使用
                MANAGED :不使用事务管理 -->
        <transactionManager type="JDBC"/>
        <!--内置的连接池:取值如下
                POOLED:使用连接池。UNPOOLED:不使用连接池 -->
        <dataSource type="POOLED">
            <!--连接参数-->
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>
    </environment>
    <!--第二个environment表示连接第二个数据库的环境-->
    <!-- 
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    -->
</environments>

3.1.3、mappers映射器配置

<!--加载映Mapper接口和SQL语句-->
<mappers>
    <!--加载一个,有多少个mapper接口就需要些多少个【不推荐】-->
    <!--<mapper class="com.itheima.mapper.UserMapper"/>-->
    <!--加载该包下所有Mapper接口中的SQL语句并存储,后期调用Mapper中方法时会执行对应SQL【推荐】-->
    <package name="com.itheima.mapper"/>
</mappers>
  1. 单元测试使用mybatis执行查询

里面的代码在使用spring框架后,也可以大部分简化。

  • 核心配置文件

1、核心配置文件顺序图片

2、md文档中对应的解释

四、添加用户信息

4.1、在UserMapper接口中定义方法和配置SQL语句

/**
     * 添加用户信息
     * @param user
     */
@Insert("insert into tb_user values(null,#{username},#{password},#{gender},#{addr})")
void add(User user);

 

4.2、 单元测试类

@Test
public void testAdd() throws IOException {
    //1 加载核心配置文件,获取 SqlSessionFactory对象
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //2 获取 SqlSession 对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //3 获取Mapper接口代理对象,
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    //4 调用方法,得到结果
    User user=new User();
    user.setUsername("张益达");
    user.setPassword("123");
    user.setAddr("湖北武汉");
    user.setGender("男");
    userMapper.add(user);
    //5 处理结果,释放资源
    sqlSession.commit(); //提交事务*****
    sqlSession.close();
}

4.3、新增总结

1、对于新增我们需要进行事务管理,怎么做?

openSession():默认开启事务,进行增删改操作后需要使用 sqlSession.commit(); 手动提交事务

openSession(true):可以设置为自动提交事务(关闭事务)

2、修改和删除也要进行事务管理。

五、注意事项

5.1、参数占位符:#{}:执行SQL时,会将#{}占位符替换为?,将来自动设置参数值

5.2、增删改需要提交事务,可以设置自动提交事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1285879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源】基于Vue+SpringBoot的数据可视化的智慧河南大屏

项目编号&#xff1a; S 059 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S059&#xff0c;文末获取源码。} 项目编号&#xff1a;S059&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 …

让我们向您介绍葡萄酒中的皮诺家族

对于那些喜欢浏览商店里的葡萄酒通道或餐厅的葡萄酒菜单的人来说&#xff0c;你可能也注意到了类似名称的葡萄酒&#xff0c;即灰皮诺和黑皮诺葡萄酒。这葡萄酒有什么区别&#xff1f;他们有任何相似之处吗&#xff1f;今天&#xff0c;我们将一探究竟&#xff01;让我们了解一…

Web端功能测试的测试方向有哪些?

一、功能测试 1.1链接测试 链接是web应用系统的一个很重要的特征&#xff0c;主要是用于页面之间切换跳转&#xff0c;指导用户去一些不知道地址的页面的主要手段&#xff0c;链接测试一般关注三点&#xff1a; 1&#xff09;链接是否按照既定指示那样&#xff0c;确实链接到…

uniapp基于u-grid-item九宫格实现uCharts秋云图表展示

uniapp基于uView的UI组件u-grid-item九宫格实现uCharts秋云可视化图表展示 这里使用uView的u-grid-item九宫格组件去显示图标排列 九宫格可以做成多列&#xff0c;移动设备上可以通过左右滑动进行展示 <template><div><div style"text-align: center;font…

msvcp110.dll文件丢失修复教程

本文将详细介绍找不到msvcp110.dll的五个解决方法&#xff0c;并解释msvcp110.dll丢失的原因和其对电脑的作用。 首先&#xff0c;让我们来了解一下msvcp110.dll丢失的原因。msvcp110.dll是Microsoft Visual C 2012 Redistributable Package的一部分&#xff0c;它是用于支持C…

1.qml-3D入门讲解介绍

本章我们来学习QML 3D教程&#xff0c;QML 3D能够支持windows linux等多平台跨平台并且显示效果大部分一致&#xff0c;非常方便&#xff0c;学习的qt版本最低为qt6.5。 要使用qml 3D类&#xff0c;需要导入QtQuick3D模块。 这是使用空间渲染器和场景图的 QML 前端。目前&…

在Linux上优化HTTP服务器的性能

在Linux上优化HTTP服务器的性能是一个涉及多个方面的任务&#xff0c;包括服务器硬件、网络设置、软件配置和内容优化。以下是一些关键的优化建议&#xff1a; 选择合适的HTTP服务器软件 Linux上有多种HTTP服务器软件&#xff0c;如Apache、Nginx、Lighttpd等。选择适合您需求…

做外贸会遇到的一些误区

很多时候&#xff0c;我们喜欢用大多数的情况去给客户提前下某种定义&#xff0c;当我们内心已经种下某种想法的时候&#xff0c;我们在对待事情的时候就会明显的不同。 但是事实上&#xff0c;其实每一个客户都是一个独特的存在&#xff0c;都是一个新的客户&#xff0c; 新的…

npm私有源构建项目下载依赖报错

Jenkins构建项目报错&#xff0c;依赖找不到 Error: Couldnt find any versions for "babel/helper-module-imports" that matches "^7.22.15"at MessageError.ExtendableBuiltin (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/…

关于清理系统错误内存转储文件的相关知识,看这篇文章就够了

当你的电脑崩溃,遇到类似蓝屏死机(BSOD)的情况时,Windows操作系统会将内存转储到硬盘上的某个位置。你可以删除这些系统错误内存转储文件以释放磁盘空间。 如何使用磁盘清理删除系统错误内存转储文件 如果内存转储文件随着时间的推移而增长,请删除该文件以恢复硬盘空间。…

文件下载保存接口的创建_FastAPI

文件下载保存接口的创建 功能描述实现代码功能演示 功能描述 在网页上对数据进行下载保存处理。例如点击网页上的保存按钮&#xff0c;会把文件下载到本地。下面就是对下载保存功能的实现。 实现代码 gpt_router.get("/export_data") async def export_data():# 需…

感觉到自己思想扭曲了

突然觉得自己思想有点扭曲。 ​起因是近期备婚&#xff0c;需要给男方家人买衣服。问男朋友妹妹衣服预算多少&#xff0c;说是500内&#xff0c;然后想想自己这个新娘子&#xff0c;那一身衣服绞尽脑汁凑满减不到300。再联想到装饰新房&#xff0c;新房买家具&#xff0c;为了省…

【性能测试】LR录制回放事务检查点

前言 上一次推文我们分享了性能测试分类和应用领域&#xff0c;今天带大家学习性能测试工作原理、事务、检查点&#xff01;后续文章都会系统分享干货&#xff0c;带大家从0到1学会性能测试&#xff0c;另外还有教程等同步资料&#xff0c;文末免费获取~ 01、LR工作原理 ​通…

CentOS或RHEL安装code-server(vscode-web)

下载rpm安装包 网络下载或者下载到本地再上传到服务器&#xff0c;点击访问国内下载地址&#xff0c;不需要积分curl -fOL https://github.com/coder/code-server/releases/download/v4.19.1/code-server-4.19.1-amd64.rpm安装 rpm -i code-server-4.19.1-amd64.rpm关闭和禁用…

配电房一体化环境监控系统

配电房一体化环境监控系统是一种综合运用多种传感器、物联网、云计算、大数据等技术的智能化监控系统&#xff0c;依托电易云-智慧电力物联网&#xff0c;实现对配电房内环境、设备运行状态等信息的实时监测和预警&#xff0c;提高配电房的安全性和可靠性。以下是配电房一体化环…

C //例10.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 例10.1 例10.1 从键盘输入一些字符&#xff0c;逐个把它们送到磁盘上去&#xff0c;直到用户输入一个“#”为止。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法&#xff1a;使用指针&…

CUDA简介, 配置和运行第一个CUDA程序(Windows和Linux)

CUDA简介 CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA开发的一种通用并行计算架构。CUDA允许程序员利用NVIDIA GPU的并行计算能力&#xff0c;加速各种计算密集型应用程序。 CUDA技术基于GPU的并行计算原理。传统的CPU处理器拥有少量的核心&…

Zabbix自定义监控内容

自定义监控客户端服务器登录的人数 需求&#xff1a;限制登录人数不超过 3 个&#xff0c;超过 3 个就发出报警信息 1.在客户端创建自定义key //明确需要执行的 linux 命令 who | wc -l//创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key vim /etc/zabbix/zabbix_ag…

零基础入坑Python爬虫的全面学习指南

文章目录 首先爬虫是什么&#xff1f;1. Python学习2.Python urllib和urllib2 库的用法3.Python 正则表达式4.爬虫框架Scrapy爬虫基本原理关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工…

Shopee买家通系统自动下单更方便

Shopee购物平台的买家通系统为用户提供了一种便捷的自动下单方式&#xff0c;通过这一系统&#xff0c;用户可以轻松实现在虾皮平台购买商品的自动化操作。下面将介绍具体的操作流程&#xff0c;确保用户可以顺利完成整个购物流程。 首先&#xff0c;用户需要准备一个可用的虾皮…