Java(使用注解的方式)连接数据库增删改查-MyBatis

@准备工作:

1.创建一个springboot项目,并添加四个依赖

分别是,MyBatis的启动依赖和安装依赖,SQL的依赖,测试依赖,如下:

2.然后创建一张至少两条数据的表

(表可以用各种图形化工具创建,因为SQL语句是统一的)

3.配置数据库的信息:

(一定要是自己的表名和密码,否则连接不上你本机数据库信息)

 4.创建一个自己的员工类,来为后面的操作做准备:

package com.zaizai.springmybatisrued.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

@增

1.先常见一个接口,在接口里面创建一个接口方法来实现增加数据

(方法上面要一个注解,就是数据库添加数据的关键字,看下面代码):

(注意,这里两个注解第一个是是否返回主键,并给主键设置返回给谁用的,第二个就是往数据库添加数据的注解,添加的对象被封装到了一个emp类里面)

    @Options(keyProperty = "id",useGeneratedKeys = true)
    @Insert("insert into emp (username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" +
            " values (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")
    void insert(Emp emp);

2.接口设置好了之后直接在测试类里面写测试代码:(先设置对象,然后封装好的对象交给方法添加到数据库)

    @Test
    public void springInsert() {

        Emp emp = new Emp();

//        emp.setId(15);
        emp.setUsername("Tom3");
        emp.setName("汤姆2");
        emp.setImage("1 .jpg");
        emp.setGender((short) 1);
        emp.setJob((short) 1);
        emp.setEntrydate(LocalDate.of(2000, 1, 1));
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        emp.setDeptId(1);

        empMapper.insert(emp);
        System.out.println(emp.getId());
    }

@删

方法:

(我这个是设置的返回删除的数据的主键的)

    @Delete("delete from emp where id=#{id}")
    //id删除数据
    public Integer delete(Integer id);

实现:

  @Autowired
    private EmpMapper empMapper;

    @Test
    public void springUred() {
        //返回的是删除的数据数
        Integer id = empMapper.delete(15);
        System.out.println(id);
    }

@改

(接下来就差不多了,都是用对应的接口然后定义方法,调用方法连接数据库进行对数据的操作)

方法:

    @Update("update emp set username=#{username},name=#{name},gender=#{gender},image=#{image}," +
            "job=#{job},entrydate=#{entrydate},dept_id=#{deptId},update_time=#{updateTime} where id=#{id}")
public void update(Emp emp);

实现:

 public void testUpdate() {
        //构造员工对象
        Emp emp = new Emp();
        emp.setId(14);
        emp.setUsername("wei");
        emp.setName("afaf");
        emp.setImage("1 .jpg");
        emp.setGender((short) 1);
        emp.setJob((short) 1);
        emp.setEntrydate(LocalDate.of(2000, 1, 1));
        emp.setUpdateTime(LocalDateTime.now());
        emp.setDeptId(1);

        empMapper.update(emp);
    }

@查

方法:

    @Select("select * from emp where id=#{id}")
    public Emp select(Integer id);

实现:

    public void springSelect(){
        Emp emp = empMapper.select(14);
        System.out.println(emp);
    }

(一定要注意准备工作准备好,依赖都不要少,要不然必然爆红!!!!!!)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于Vue+SpringBoot的免税店商城管理系统

文末获取源码,项目编号: S 069 。 \color{red}{文末获取源码,项目编号:S069。} 文末获取源码,项目编号:S069。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统…

UE4/UE5 修改/还原场景所有Actor的材质

使用蓝图方法: 1.修改场景所有Actor 材质: Wirframe:一个材质类 MatList:获取到的所有模型的全部材质 的列表 TempAllClass:场景中所有获取的 Actor 的列表 功能方法如下: 蓝图代码可复制在&#xff1a…

基于SpringBoot+Vue会员制医疗预约服务管理信息系统(Java毕业设计)

点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…

TensorBoard使用和问题解决

一、什么是TensorBoard? TensorBoard 是一组用于数据可视化的工具,它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括: 可视化模型的网络架构跟踪模型指标,如损失和准确性等检查机器学习工作流程中权重、偏差和其他…

ABAP - Function ALV 02 简单开发一个Function ALV

了解Function ALV: https://blog.csdn.net/HeathlX/article/details/134879766?spm1001.2014.3001.5501程序开发步骤:① TCODE:SE38创建程序 ② 编写程序 DATA gt_spfli TYPE TABLE OF spfli.** Layout 变量定义 (固定使用 直接粘贴复制即可) DATA gs…

我的acer电脑U盘装系统前BIOS设置及装系统过程中的操作

1、开机长按F2进入BIOS设置 2、使能F12 3、调整boot顺序,使USB启动的优先级最高 4、按F10保存退出 5、插入U盘开机,boot选择界面无需操作,等待几秒,默认进入U盘系统 由于既使能了F12,又将U盘的优先级进调整到了最高&…

springboot集成knife4j详细教程

使用原生的swagger作为接口文档,功能不够强大,并且默认的ui比较简陋,不符合大众审美。所以实际开发中推荐使用knife4j对swagger进行增强。knife4j的地址:https://gitee.com/xiaoym/knife4j 基本使用 想要使用knife4j非常简单&…

Android获取Wifi网关

公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后…

UnoCSS 原子化开发初体验

UnoCSS 是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 classname 类名而烦恼了。 一、UnoCSS 特点 完全可定制:无核心工具,所有功能都通过预设提供…

【Fastadmin】根据Fieldlist键值组件做一个等级配置的完整示例

目录 1.效果展示: ​编辑 2.建表: 3.html页面 4.controller控制器 5.js 6.model 1.效果展示: 2.建表: 表名:fa_xxfb_config /*Navicat Premium Data TransferSource Server : rootSource Server Type …

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

制作蓝牙小车(一)

制作控制蓝牙小车app 想制作一个蓝牙小车,通过手机app程序操控小车运行,制作分2个部分(app制作,蓝牙小车硬件以及程序制作),先完成第一个部分app制作,本次app是通过androidstudio软件来制作安卓…

私域爆款案例拆解-元气森林

一、背景调研 二、引流策略 三、私域运营策略

第十一章 React 封装自定义组件

一、专栏介绍 🌍🌍 欢迎加入本专栏!本专栏将引领您快速上手React,让我们一起放弃放弃的念头,开始学习之旅吧!我们将从搭建React项目开始,逐步深入讲解最核心的hooks,以及React路由、…

客户案例:EDLP在央国企邮件数据合规中的价值与优势

客户背景 某机械制造企业,作为动力设备领域的领军企业,专门从事动力设备的研发、制造与销售。凭借丰富的经验与卓越的技术实力,该企业致力于深度研究动力设备的核心技术,为客户提供高效且可靠的解决方案。 客户需求 作为企业健康…

4 向微服务架构转变

文章目录 小型单体系统为什么选择小型单体系统微服务与生俱来的问题小型单体系统适用于小团队拥抱重构 规划未来拆分的小型单体应用程序新需求和游戏化用户故事游戏化:积分、徽章和排行榜 转向微服务独立的工作流程水平可伸缩性细粒度的非功能需求其他优势劣势 架构…

【带头学C++】----- 九、类和对象 ---- 9.10 C++设计模式之单例模式设计

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️麻烦您点个关注,不迷路❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目 录 9.10 C设计模式之单例模式设计 举例说明: 9.10 C设计模式之单例模式设计 看过我之前的文章的,简单讲解过C/Q…

微信小程序---页面导航

1.声明式导航 (1)跳转到tabBar (2)跳转到非tabBar 注意,这个open-type"navigate"可以省略 (3)后退式导航 注意,如果只是后退到上一个页面,可以省略delta属性…

C++指针常量与常量指针

指针常量 const int * ptr new int(10); // 1)常量指针 指针指向一个常量即指向的值不可改变 指针常量是指这个指针是一个常量,即指针的指向(地址)不可改变,但是地址对应的值是可以改变的。 常量指针 int * const ptr2 new int(20); // …

遥感图像之多模态检索AMFMN(支持关键词、句子对图像的检索)论文阅读、环境搭建、模型测试、模型训练

一、论文阅读 1、摘要背景 遥感跨模态文本图像检索以其灵活的输入和高效的查询等优点受到了广泛的关注。然而,传统的方法忽略了遥感图像多尺度和目标冗余的特点,导致检索精度下降。为了解决遥感多模态检索任务中的多尺度稀缺性和目标冗余问题&#xff…