实验一 MyBatis框架实验

news2024/11/17 13:53:51

一、实验环境

Windows10、IDEA2023.1.2、mybatis 3.5.6、DataGr

二、实验目的与要求

1、掌握 MyBatis 开发环境的搭建;

2、熟悉 MyBatis 的开发步骤;

3、掌握 MyBatis 基本对象、配置文件和映射文件的使用;

4、掌握 MyBatis 动态 SQL 开发。

三、实验步骤与结果(重点,应包含详细步骤、核心代码、结果截图等)

1、创建商品表和对应的实体类,包括 id(主键)、品类、名称、品牌、价格等字段;

在DataGrip中创建表:

USE mybatis;

CREATE TABLE goods(

    id int primary key auto_increment,

    sort varchar(25) not null,

    name varchar(20) not null ,

    brand varchar(20) not null ,

    price float not null

);


插入数据:

INSERT INTO goods VALUES (null,'数码产品','宏碁非凡S3X','宏碁',4600),

                         (null,'数码产品','联想R7000','联想',8600),

                         (null,'数码产品','联想R9000','联想',9600),

                         (null,'数码产品','联想小新','联想',4300);

创建对应的实体类:

package com.yin.pojo;


/**

 * Author: Rhett Butler

 * Project:MyBatisDemo1

 * Date:2023/12/9  15:07

 */

public class goods {

    private int id;

    private String sort;

    private String name;

    private String brand;

    private float price;


    @Override

    public String toString() {

        return "goods{" +

                "id=" + id +

                ", sort='" + sort + '\'' +

                ", name='" + name + '\'' +

                ", brand='" + brand + '\'' +

                ", price=" + price +

                '}';

    }


    public int getId() {

        return id;

    }


    public void setId(int id) {

        this.id = id;

    }


    public String getSort() {

        return sort;

    }


    public void setSort(String sort) {

        this.sort = sort;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public String getBrand() {

        return brand;

    }


    public void setBrand(String brand) {

        this.brand = brand;

    }


    public float getPrice() {

        return price;

    }


    public void setPrice(float price) {

        this.price = price;

    }

}

 

2、实现添加商品功能

<insert id="insertGoods"

            parameterType="goods">

        insert into goods values (null,#{sort},#{name},#{brand},#{price})

    </insert>

 

 

3、实现通过 id 删除指定商品功能;

   

 <delete id="deleteById"

            parameterType="integer">

        delete from goods where id=#{id}

    </delete>

 

4、实现通过 id 修改指定商品功能,注意当只需要修改某些商品属性时(如价格),用户不需要提供其它商品属性信息;

<update id="updateByProperty"

            parameterType="goods">

        update goods

        <trim prefix="set" suffixOverrides=",">

            <if test="sort !=null and sort !=''">

                sort =#{sort}

            </if>

            <if test="name !=null and name !=''">

                name =#{name}

            </if>

            <if test="brand !=null and brand !=''">

                brand =#{brand}

            </if>

            <if test="price !=null and price !=''">

                price =#{price}

            </if>

        </trim>

        where id=#{id}

    </update>

 

用户不需要提供其它商品属性信息即可修改任意属性。

5、实现对商品的查询,具体要求有:

(1)根据 id 查找某个商品;    

    <select id="selectById"
            parameterType="integer"
            resultType="goods">
        select *
        from goods
        where id = #{id}
    </select>

(2)查找某个品类下的所有商品;

    

<select id="selectGoods"

            resultType="goods">

        select * from goods where 1=1

        <choose>

            <when test="sort !=null and sort !=''">

                and sort =#{sort}

            </when>

            <otherwise>

                and number is not null

            </otherwise>

        </choose>

    </select>

(3)根据名称进行模糊查找;

    <select id="selectByName"

            resultType="goods">

        select * from goods where 1=1

        <if test="name !=null and name !=''">

            and name like concat('%',#{name},'%')

        </if>

    </select>

(4)根据品牌和价格进行联合查找(品牌和价格信息都可以提供或不提供);

    

<select id="selectByUnite"

            resultType="goods">

        select * from goods where 1=1

        <choose>

            <when test="brand !=null and brand !=''">

                and brand =#{brand}

                <if test="price !=null and price !=''">

                    and price =#{price}

                </if>

            </when>

            <when test="test= price !=null and price !=''">

                and price =#{price}

            </when>

            <otherwise>

                and number is not null

            </otherwise>

        </choose>

    </select>

(5)查找 id 小于 5 的所有商品。

    

<select id="selectByIdArea"

            resultType="goods">

        select * from goods where id in

        <foreach collection="list" separator="," close=")" open="(" item="id">

            #{id}

        </foreach>

    </select>

四、讨论、心得遇到的问题与解决办法等)

在使用多个关键词进行搜索的时候,感觉when和if好像都可以达到最终目的,在这时需要对问题进行细化思考,来决定最终使用什么来实现相应功能。

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

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

相关文章

基于 DCT 的图像滤波

需求分析 对于图像去噪这一需求&#xff0c;我们可以通过DCT&#xff08;离散余弦变换&#xff09;算法来实现。DCT是一种基于频域的变换技术&#xff0c;可以将图像从空间域转换为频域&#xff0c;然后通过滤波等处理方式进行去噪。 针对这一需求&#xff0c;我们需要进行以下…

Android --- Room数据库(Java)

概念 Room 是一个持久性库&#xff0c;属于 Android Jetpack 的一部分。Room 是 SQLite 数据库之上的一个抽象层。SQLite 使用一种专门的语言 (SQL) 来执行数据库操作。Room 并不直接使用 SQLite&#xff0c;而是负责简化数据库设置和配置以及与数据库交互方面的琐碎工作。此…

使用Python类的构造函数和析构函数

1、问题背景 当使用Python类时&#xff0c;可以使用构造函数和析构函数来初始化和清理类实例。构造函数在创建类实例时自动调用&#xff0c;而析构函数在删除类实例时自动调用。 在上面的代码示例中&#xff0c;Person类具有一个构造函数__init__和一个析构函数__del__。构造…

PHP MySQL图解学习指南:开启Web开发新篇章

PHP曾经是最流行的Web开发语言&#xff0c;许多世界领先的网站(如Facebook、维基百科和WordPress)都是用它编写的。PHP运行在Web服务器端&#xff0c;通过使用存储在MySQL数据库中的数据&#xff0c;使得网站可以为每一位访问者显示不同的定制页面。书中采用简单、直观的图示化…

大模型智力升级:AI的未来之路

大模型的发展引领了人工智能的新时代&#xff0c;其强大的数据处理和学习能力在医疗、金融、教育等众多领域取得了令人瞩目的成就。然而&#xff0c;随之而来的挑战也不容忽视。尽管大模型在特定任务上展现出了卓越的性能&#xff0c;但它们在理解复杂语境、处理未见情况的能力…

Linux内网中安装jdk1.8详细教程

本章教程,主要介绍如何在内网环境中配置JDK1.8环境变量 一、下载Linux版压缩包 下载地址:https://www.oracle.com/java/technologies/downloads/#java8 下载完成之后,通过XFTP等工具,将安装包上传到内网服务器 二、安装配置步骤 1、解压压缩包 tar -zxvf /usr/local/jdk-…

[Qt]关于QListWidget、QScrollArea 为什么在QDesigner上设置了之后界面上仍然不生效的问题

前言 最近做了一些有关QListWidget和QScrollArea的控件&#xff0c;我去&#xff0c;这两个控件是真的坑&#xff0c;明明我在QDesigner的操作界面上对这两个控件的界面进行了修改&#xff0c;但是编译出来的软件就是看上去什么都没有&#xff0c;很坑&#xff0c;Gpt也没解决…

html 引用vue3 element 首次加载缩成一团 挤在一起

问题&#xff1a;原生html引用vue,element plus 分析&#xff1a; vue.js, element脚本过大&#xff0c;首次加载网络慢的话&#xff0c;会是缩在这里&#xff0c;没完全渲染 解决&#xff1a; 没加载之前&#xff0c;不显示div&#xff0c;显示一个加载提示语 改动地方app…

CatDDoS僵尸网络与DNSBomb攻击:DDOS攻击最新变种

在近期的网络安全领域&#xff0c;两大严峻挑战浮出水面&#xff0c;为中国乃至全球的网络防护体系敲响了警钟。中国安全厂商奇安信的X实验室团队揭露了一波名为CatDDoS的恶意软件攻击浪潮&#xff0c;与此同时&#xff0c;一种创新且隐蔽的拒绝服务攻击技术——DNSBomb&#x…

揭秘IDM:数字资产管理的未来之星

在当今数字化时代&#xff0c;数字资产管理的重要性日益凸显。随着科技的飞速发展&#xff0c;越来越多的企业和个人开始关注如何有效管理和保护他们的数字资产。在这个过程中&#xff0c;IDM&#xff08;身份管理系统&#xff09;逐渐成为了热门话题。IDM作为一种新兴的技术手…

云原生网关 MSE-Higress

云原生网关 MSE-Higress 什么是云原生网关MSEMSE测评产品文档产品能力产品控制台 MSE与其他网关 什么是云原生网关MSE 在体验云原生网关 MSE-Higress功能之前&#xff0c;先了解一下什么是云原生网关 MSE&#xff0c;简单的说就是MSE就是遵循开源 Ingress/Gateway API 标准的下…

探数API分享-全球电价一览:谁最高,谁最低?

全球家庭用电价格的平均水平约为0.139美元/千瓦时&#xff0c;这是根据2021年12月的统计数据得出的。在这个平均水平之上&#xff0c;有一些国家的家庭用电价格远超过这个数值&#xff0c;特别是在欧洲的一些发达国家。 丹麦、荷兰、德国、英国、西班牙、比利时等国家的家庭用…

Token验证流程、代码示例、优缺点和安全策略,一文告诉你。

Token和Session都是用于身份验证和授权的机制&#xff0c;而且Token渐渐成为主流&#xff0c;有不少小伙伴对token的认识不全&#xff0c;这里给大家分享下。 一、什么是Token Token是一种用于身份验证和授权的令牌&#xff0c;通常用于在客户端和服务器之间进行安全的通信。…

小型水库水雨情和大坝安全监测解决方案

小型水库水雨情和大坝安全监测解决方案 小型水库作为重要的水资源管理和防洪调蓄设施&#xff0c;在保障农业灌溉、居民饮水及防洪安全方面发挥着不可或缺的作用。然而&#xff0c;由于其规模限制&#xff0c;小型水库往往在水雨情监测和大坝安全评估方面面临资源和技术的双重…

项目经理催开发进度的5大技巧

项目经理在催促开发进度时&#xff0c;采用的技巧对于项目成功至关重要。这不仅影响到项目的按时完成&#xff0c;还关系到团队的士气、效率和最终产品的质量。项目经理如果不去主动催促开发进度&#xff0c;可能导致项目延期&#xff0c;团队偏离原定路线&#xff0c;工作重点…

ASTRONEER异星探险家服务器开服多人联机

1、购买后登录服务器 进入控制面板后会出现正在安装的界面&#xff0c;安装大约5分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、获取数字IP地址 使用IP 地址查询网站将服务器IP地址填入后点击查询&#xff08;查询的时候将地址冒号后方的数字以及冒…

红苹果的圆度、直径大小标定

function fruitImageProcessingGUI% 创建主窗口和控件mainFigure figure(Units, normalized, Position, [0.3, 0.3, 0.4, 0.4]);instructionText uicontrol(Style, text, String, 请点击按钮执行相应的图像处理步骤, ...Units, normalized, Position, [0.1, 0.7, 0.8, 0.2], …

Nacos 进阶篇---Nacos服务下线做了哪些事情 ?(八)

一、引言 本章节是第一阶段最后一篇&#xff0c;那么我们今天要学习的源码内容是 “服务下线”. 当Nacos客户端下线的时候&#xff0c;是要去通知服务端&#xff0c;告诉服务端 “ 我已经下线&#xff0c;不可用了 ”。并且在服务下线时&#xff0c;还要去通知其他客户端服务更…

uni-app解决表格uni-table样式问题

一、如何让表格文字只显示一行&#xff0c;超出部分用省略号表示 步骤 &#xff1a; 给table设置table-layout:fixed; 列宽由表格宽度和列宽度设定。&#xff08;默认是由单元格内容设定&#xff09;让表格元素继承父元素宽度固定table-layout: inherit;overflow: hidden;超过…

STM32-电灯,仿真

目录 1.配置vscode 2.新创建软件工程 3.仿真 4.源码 5.运行效果 1.配置vscode http://t.csdnimg.cn/BvCLx 安装 C/C Extension Pack 安装 Embedded IDE 安装 Keil MDK 配置路径 2.新创建软件工程 下拉找到对应的 输入项目名字,选择项目所在文件夹即可 3.仿真 一路新…