使用mybatis注解和xml映射执行javaWeb中增删改查等操作

Mapper接口

使用注解执行SQL语句操作和相应的Java抽象类(对于简单的增删改查使用注解)
@Mapper
public interface EmpMapper {// 根据id删除员工信息@Delete("delete from mybatis.emp where id=#{id}")public int EmpDelete(Integer id);// 查询所有员工信息@Select("select * from emp")public List<Emp> EmpSelect();//将自动增长的id封装到emp对象的id属性中@Options(useGeneratedKeys = true, keyProperty="id")//向emp表中插入一条数据@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})")public void EmpInsert(Emp emp);//更新emp表中的数据@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);//方案一:为字段起别名,让MySQL中的字段和java类中的字段名一致,这样mybatis 就能获取MySQL中相对应的字段数据了
//    @Select("select id, username, password, name, gender, image, job, entrydate, dept_id as deptId, create_time as createTime, " +
//            "update_time as updateTime from emp where id = #{id}")
//    public Emp Search(Integer id);//    // 方案二:在Results注解中将数据库表中的dept_id列映射到Java对象中的deptId属性
//    @Results({
//                    //MySQL中的字段名和Java类中对应的属性名
//            @Result(column = "dept_id",property = "deptId"),
//            @Result(column = "create_time",property = "createTime"),
//            @Result(column = "update_time",property = "updateTime")
//
//    })
//    @Select("select * from emp where id = #{id}")
//    public Emp Search(Integer id);//方案三:在配置文件中开启mybatis的驼峰命名自动映射开关mybatis.camel,无需动原代码自动映射// 根据id查询员工信息@Select("select * from emp where id = #{id}")public Emp Search(Integer id);@Select("select * from emp where name like concat('%',#{name},'%') and gender= #{gender} and entrydate between #{begin} and #{end} order by update_time desc")//条件查询public List<Emp> conditionSearch(String name , Short gender , LocalDate begin , LocalDate end);
}
使用xml配置映射语句(对于复杂的SQL语句,建议使用xml配置映射语句)

接收MySQL数据的Java类

@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;     //LocalDate类型对应数据表中的date类型private Integer deptId;private LocalDateTime createTime;//LocalDateTime类型对应数据表中的datetime类型private LocalDateTime updateTime;
}

连接数据库和引入mybatis的配置文件

spring.application.name=mybatis-idus
#连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=root
#配置mybatis.log日志,指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关mybatis.camel
mybatis.configuration.map-underscore-to-camel-case=true

执行相关操作的测试类

@SpringBootTest
class MybatisCdusApplicationTests {@Autowiredprivate EmpMapper emp;@Testvoid contextLoads() {//        //删除id为17的员工
//        int n = emp.EmpDelete(17);
//        System.out.println(n);
//        //创建一个新的员工对象
//        Emp emp2 = new Emp();
//        //设置员工对象的属性
//        emp2.setUsername("Tom3");
//        emp2.setName("汤姆3");
//        emp2.setGender((short)1);
//        emp2.setImage("https://img-home.csdnimg.cn/images/20240218021830.png");
//        emp2.setJob((short)2);
//        emp2.setDeptId(1);
//        emp2.setEntrydate(LocalDate.now());
//        emp2.setCreateTime(LocalDateTime.now());
//        emp2.setUpdateTime(LocalDateTime.now());
//        //插入新的员工对象
//        emp.EmpInsert(emp2);
//        //使用了 @Options(useGeneratedKeys = true, keyProperty="id") 就可以获取主键值了
//        System.out.println(emp2.getId());
//
//        System.out.println(n);
//
//        //创建一个新的员工对象
//        Emp emp3 = new Emp();
//        //设置员工对象的属性
//        emp3.setUsername("Tom4");
//        emp3.setName("汤姆4");
//        emp3.setGender((short)1);
//        emp3.setImage("https://img-home.csdnimg.cn/images/20240218021830.png");
//        emp3.setJob((short)2);
//        emp3.setDeptId(1);
//        emp3.setEntrydate(LocalDate.of(2001,12,12));
//        emp3.setCreateTime(LocalDateTime.now());
//        emp3.setUpdateTime(LocalDateTime.now());
//        emp3.setId(21);
//        //更新员工对象
//        emp.update(emp3);
//
//        //根据id查询员工对象
//        Emp employee = emp.Search(21);
//        System.out.println(employee.toString());// 根据姓名、性别、入职日期和当前日期进行条件查询emp.conditionSearch("汤", (short) 1, LocalDate.of(2010,1,1),LocalDate.now());}}

MySQL相关数据

create table emp
(id          int unsigned auto_increment comment 'ID'primary key,username    varchar(20)                  not null comment '用户名',password    varchar(32) default '123456' null comment '密码',name        varchar(10)                  not null comment '姓名',gender      tinyint unsigned             not null comment '性别, 说明: 1 男, 2 女',image       varchar(300)                 null comment '图像',job         tinyint unsigned             null comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',entrydate   date                         null comment '入职时间',dept_id     int unsigned                 null comment '部门ID',create_time datetime                     not null comment '创建时间',update_time datetime                     not null comment '修改时间',constraint usernameunique (username)
)comment '员工表';

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mysql 第一篇章】系统和数据库的交互方法

一、宏观的查看系统怎么和数据库交互 在我们刚刚接触系统和数据库的时候不明白其中的原理&#xff0c;只知道系统和数据库是需要交互的。所以我们会理解成上图的形式。 二、MYSQL 驱动 随着我们的学习时间的加长以及对程序的了解&#xff0c;发现链接数据库是需要有别的工具辅…

可乐机的设计验证

前言 状态机&#xff08;State Machine&#xff09;是一种数学模型&#xff0c;用于表示具有有限状态集合的系统。它通过定义状态、转移规则和事件&#xff0c;描述系统在不同条件下的行为。状态机的核心概念包括状态、事件、转移和动作。状态是系统的具体条件或配置&#xff0…

【Python】函数入门(下)

3&#xff09;&#xff09;* ** ​​​​​​注意&#xff1a;也遵循位置传参在前面&#xff0c;按关键字传参在后面。 代码示例&#xff1a; def func(*args,**kwargs):print(args,kwargs) 该函数中的参数会自动根据传参的方式不同&#xff08;即&#xff1a;按位置…

k8s 四种Service类型(ClusterIP、NodePort、LoadBalancer、ExternalName)详解

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、k8s概述 2、Service在Kubernetes中的…

【Redis】事务

目录 什么是事务 事务操作 MULTI EXEC DISCARD WATCH UNWATCH 什么是事务 Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执⾏. 但是注意体会 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: redis 没有 "回滚机制…

Zabbix自动导出PDF报告

zabbix6提供了定时导出PDF报告功能。此功能可按照Dashboard维度&#xff0c;定时自动导出报告&#xff0c;并通过邮件发送。 1.安装 zabbix 提供了官方的rhel8版本的rpm包&#xff0c;可使用yum方式安装&#xff0c;zabbix自动导出PDF功能是基于go环境的zabbix web service程…

C语言 ——— 在杨氏矩阵中查找具体的某个数

目录 何为杨氏矩阵 题目要求 代码实现 何为杨氏矩阵 可以把杨氏矩阵理解为一个二维数组&#xff0c;这个二维数组中的每一行从左到右是递增的&#xff0c;每一列从上到下是递增的 题目要求 在杨氏矩阵中查找具体的某个数 要求&#xff1a;时间复杂度小于O(N) 代码实现…

如何定义和引用二维数组

一.二维数组 常称为矩阵&#xff0c;把二维数组写成行和列的排列形式。、 二.怎么定义二维数组 float pay[3][5]; 以上定义了一个float型的二维数组&#xff0c;第1维有3个元素&#xff0c;第2维有6个元素。每一维的长度分别用一对方括号括起来。 二维数组定义的一般形式为 …

基于STM32开发的智能家居照明控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 家庭照明自动化节能照明管理常见问题及解决方案 常见问题解决方案结论 1. 引言 智能家居照明控制系统通过整合各种传感器和控制器&#xff0c;能够实现对家居照…

基于ICMP(Ping)的多线程网络通道监视程序(QT)开发

基于ICMP(Ping)的多线程网络通道监视程序(QT)开发 1、 ICMP原理简介 可参考 ICMP(Ping)功能原理及其C实现简介 。 2、 网络通道监视程序开发 设计原理&#xff1a; 通过PING 功能实现服务器、交换机、网闸等设备的网络检测&#xff0c;判断网络的否可达和TTL计算 。 具备功…

【应用层协议】自定义协议 {定义结构化数据;数据格式转换:序列化和反序列化,使用json库进行数据格式交换;分包和解包:为报文内容添加报头}

一、简单了解TCP协议&#xff08;引子&#xff09; 1.1 三次握手 三次握手就是客户端向服务端发起连接的过程 服务器初始化 调用socket&#xff0c;创建套接字文件 调用bind&#xff0c;将当前的文件描述符和ip/port绑定在一起&#xff1b;如果这个端口已经被其他进程占用了&…

外贸12年,通过6个方法,成交几千万订单

做外贸有12个年头了&#xff0c;各种各样的方法都有试过&#xff0c;我成交的这几千万订单&#xff0c;大部分都是通过这6个方法来的&#xff0c;下面我来给大家整理分享一下。 1.谷歌搜索 谷歌搜索算是做外贸入门级的基础技能了&#xff0c;要做好外贸&#xff0c;这个技能一…

86.小米相机修改拍照(尺寸,画幅,比例)的方法

目录 1.打开相机&#xff0c;拍照模式&#xff0c;上面有个箭头或三个点&#xff0c;点击 2.点击画幅 3.点击你想要的画幅即可。 想要修改手机照片的&#xff08;尺寸&#xff0c;画幅&#xff0c;比例&#xff09;时&#xff0c;总会去找分辨率&#xff0c;其实并不是&…

Leetcode - 周赛410

目录 一&#xff0c;3248. 矩阵中的蛇 二&#xff0c;3249. 统计好节点的数目 三&#xff0c;3250. 单调数组对的数目 I dfs记忆化 dfs记忆化1&#xff1a;1改递推 四&#xff0c;3251. 单调数组对的数目 II 一&#xff0c;3248. 矩阵中的蛇 本题就是一道纯模拟题&#x…

django高校毕业生就业推荐系统-计算机毕业设计源码26096

摘 要 当前就业市场竞争激烈&#xff0c;高校毕业生面临着就业难的问题&#xff0c;同时企业也面临招聘难、选人难的挑战。为了更好地对接高校毕业生和企业之间的需求&#xff0c;为毕业生提供个性化的就业求着信息&#xff0c;开发一套充分利用Django和Python技术实现的毕业生…

中科院TOP“灌水神刊”合集!年发文量动辄数千篇,TOP的地位,4区的录用率!

【SciencePub学术】本期&#xff0c;给大家推荐几本环境领域的“灌水神刊”&#xff01;均隶属于中科院TOP刊之列&#xff0c;但是每年庞大的发文量致使投稿接收率极高&#xff01;话不多说&#xff0c;想“灌水”的建议收藏&#xff01; 01 年刊文量4000 Journal of Cleaner …

【sgCreateAPIFunction】自定义小工具:敏捷开发→自动化生成API接口方法代码片段脚本(接口方法代码生成工具)

sgCreateAPIFunction源码 <template><!-- 前往https://blog.csdn.net/qq_37860634/article/details/141159084 查看使用说明 --><div :class"$options.name"><div class"sg-head">接口方法生成工具<el-dropdown:show-timeou…

Redis操作--RedisTemplate(一)介绍

一、介绍 1、简介 RedisTemplate 是 Spring Data Redis 提供的一个高级抽象&#xff0c;由 Spring 官方提供的方便操作 Redis 数据库的一个工具类&#xff0c;支持模板设计模式&#xff0c;使得操作 Redis 更加符合 Spring 的编程模型。还支持序列化机制&#xff0c;可以处理…

第二证券:虚拟现实概念强势,博士眼镜三连板,星星科技涨停

虚拟现实概念14日盘中再度走强&#xff0c;到发稿&#xff0c;硕贝德、博士眼镜、星星科技“20cm”涨停&#xff0c;亚世光电、亿道信息、卓翼科技亦涨停&#xff0c;佳禾智能涨超9%。 值得注意的是&#xff0c;博士眼镜已连续3个交易日涨停。公司昨日在出资者互动途径表示&am…

电脑开机后出现bootmgr is missing原因及解决方法

最近有网友问我为什么我电脑开机后出现bootmgr is missing&#xff0c;这个提示意思是:意思是启动管理器丢失&#xff0c;说明bootmgr损坏或者丢失&#xff0c;系统无法读取到这个必要的启动信息导致无法启动。原因有很多&#xff0c;比如我们采用的是uefi引导&#xff0c;而第…