学习笔记:基于SpringBoot的牛客网社区项目实现(三)之MyBatis入门

news2024/11/22 23:23:02

一、数据库建表

 二、entity目录下创建user实体类

三、dao目录下创建userMapper映射接口 

@Mapper
public interface UserMapper {
    User selectById(int id);

    User selectByName(String username);

    User selectByEmail(String email);

    int insertUser(User user);

    int updateStatus(int id, int status);

    int updateHeader(int id, String headerUrl);

    int updatePassword(int id, String password);
}

四、创建user-mapper映射xml文件

xml文件的格式可以在mybatis官网找到,直接复制进文件就行。

<?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 namespace="com.nowcoder.community1.dao.UserMapper">
<!-- namespace里面写和哪个mapper对应-->
    <sql id="insertFields">
        username, password, salt, email, type, status, activation_code, header_url, create_time
    </sql>

    <sql id="selectFields">
        id, username, password, salt, email, type, status, activation_code, header_url, create_time
    </sql>

    <select id="selectById" resultType="User">
        select <include refid="selectFields"></include>
        from user
        where id = #{id}
    </select>

    <select id="selectByName" resultType="User">
        select <include refid="selectFields"></include>
        from user
        where username = #{username}
    </select>

    <select id="selectByEmail" resultType="User">
        select <include refid="selectFields"></include>
        from user
        where email = #{email}
    </select>

    <insert id="insertUser" parameterType="User" keyProperty="id">
        insert into user (<include refid="insertFields"></include>)
        values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
    </insert>

    <update id="updateStatus">
        update user set status = #{status} where id = #{id}
    </update>

    <update id="updateHeader">
        update user set header_url = #{headerUrl} where id = #{id}
    </update>

    <update id="updatePassword">
        update user set password = #{password} where id = #{id}
    </update>

</mapper>

五、测试从数据库中查找

@Test
public void testSelectUser() {
    User user = userMapper.selectById(101);
    System.out.println(user);

    user = userMapper.selectByName("liubei");
    System.out.println(user);

    user = userMapper.selectByEmail("nowcoder101@sina.com");
    System.out.println(user);
}

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

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

相关文章

tun驱动之read

从tun驱动读取的数据&#xff0c;最终来源于用户空间通过write写入的数据&#xff0c;如下所示&#xff1a; inti fd socket(); int f open("/dev/net/tun", O_RDWR) write(fd, buf, len); --> 协议栈 --> t…

3-MATLAB APP Design-切换按钮组和单选按钮组

一、APP 界面设计展示 1.新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、切换按钮、单选按钮,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:切换按钮和单选按钮的使用,调整背景颜色,字体的颜色为黑色,字体的大小调为26. 2.在左侧组件…

Linux各种发行版介绍

Linux已经被广泛应用在人们的日常生活工作用品中&#xff0c;比如手机&#xff0c;智能家居&#xff0c;汽车电子&#xff0c;可穿戴设备等等&#xff0c;只不过很多人并不知道自己使用的电子设备里面运行的是linux系统。看一组数据&#xff1a;1.90%的公有云应用在使用Linux系…

利用Dockerfile开发定制镜像实战.

Dockerfile的原理 dockerfile是一种文本格式的文件&#xff0c;用于描述如何构建Docker镜像。在Dockerfile中&#xff0c;我们可以定义基础镜像、安装依赖、添加文件等操作&#xff0c;最终生成一个可以直接运行的容器镜像。 Dockerfile的原理可以分为以下几个步骤&#xff1a…

如何快速为子公司创建SAP财务账套的操作步骤

相对来说在SAP上配置一家子公司比从0开始创建创建一家公司可以节省很多步骤&#xff0c;因为子公司的很多配置&#xff08;如科目表&#xff0c;科目&#xff0c;折旧表&#xff0c;折旧代码等&#xff09;可以沿用母公司的。本文就简单介绍一下创建子公司财务账套的配置步骤.只…

中国省市选择插件

快速使用 1.引用 ChineseCities.min.js 2.拷贝以下布局结构 <select id"province"><option value"请选择城市">请选择省份</option> </select> <select id"city"><option value"请选择城市">请…

无监督对比学习(CL)最新必读经典论文整理分享

对比自监督学习技术是一种很有前途的方法&#xff0c;它通过学习对使两种事物相似或不同的东西进行编码来构建表示。Contrastive learning有很多文章介绍&#xff0c;区别于生成式的自监督方法&#xff0c;如AutoEncoder通过重建输入信号获取中间表示&#xff0c;Contrastive M…

设备树下的LED灯

一、什么是设备树设备树&#xff0c;将这个词分开就是设备和树&#xff0c;描述设备树的文件叫DTS(Device Tree Source)&#xff0c;这个DTS文件采用树形结构描述板级设备&#xff0c;也就是开发板上的设备信息&#xff0c;比如CPU数量、内存基地址、IIC接口上接了哪些设备、SP…

进度计划:什么是关键路径管理 1/2

目录 引言 什么是关键路径法&#xff1f; 为什么 CPM 调度对项目管理很重要&#xff1f; CPM 计划元素 关键路径方如何工作&#xff1f; 引言 关键路径&#xff0c;也称为最长路径&#xff0c;是直接影响项目完成日期的一系列任务。关键路径上的每项任务都称为关键活动。…

蓝桥杯C/C++VIP试题每日一练之芯片测试

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…

【C++学习】【STL】deque容器

dequeDouble Ended Queues(双向队列)deque和vector很相似&#xff0c;但是它允许在容器头部快速插入和删除&#xff08;就像在尾部一样&#xff09;。所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是&#xff0c;deque 容器中存储元素并不能保证所有元素都存储到连续的内…

kubernetes实战与源码学习

1.1 关于Kubernetes的介绍与核心对象概念 关于Kubernetes的介绍与核心对象概念-阿里云开发者社区 k8s架构 核心对象 使用kubeadm10分钟部署k8集群 使用 KuboardSpray 安装kubernetes_v1.23.1 | Kuboard k8s-上部署第一个应用程序 Deployment基本概念 给应用添加service&a…

自组织(Self-organization),自组织临界性(Self-organized criticality)

文章目录1. 自组织1.1 概述1.2 原则1.3 历史1.4 按领域1.4.1 物理1.4.2 化学1.4.3 生物学1.4.4 宇宙学1.4.5 计算机科学1.4.6 控制论1.4.7 社会学1.4.8 经济学1.4.9 运输1.4.10 语言学1.4.11 研究1.5 自发秩序&#xff08;Spontaneous order&#xff09;1.5.1 历史2. 自组织临界…

【LeetCode每日一题】——671.二叉树中第二小的节点

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 深度优先搜索 二【题目难度】 简单 三【题目编号】 671.二叉树中第二小的节点 四【题目描述】…

PMP项目管理项目进度管理

目录1 项目进度管理概述2 规划进度管理3 定义活动4 排列活动顺序5 估算活动持续时间1 项目进度管理概述 项目进度管理包括为管理项目按时完成所需的各个过程。在工作分解结构的基础上&#xff0c;针对交付工作包的需要&#xff0c;列出为完成项目而必须进行的活动工作&#xf…

java -- stream流

写在前面: stream流一直在使用&#xff0c;但是感觉还不够精通&#xff0c;现在深入研究一下。 stream这个章节中&#xff0c;会用到 函数式接口–lambda表达式–方法引用的相关知识 介绍 是jdk8引进的新特性。 stream流是类似一条流水线一样的操作&#xff0c;每次对数据进…

初识HTML、W3C标准、如何利用IDEA创建HTML项目、HTML基本结构、网页基本信息

一、什么是HTML&#xff1f; HTML——Hyper Text Markup Languagr&#xff08;超文本标记语言&#xff09; 超文本包括&#xff1a;文字、图片、音频、视频、动画等 目前网页中常用——HTML5 HTML5提供了一些新的元素和一些有趣的新特性&#xff0c;同时也建立了一些新的规则…

LeetCode-1049. 最后一块石头的重量 II

目录思路回溯法动态规划动态规划(压缩)题目来源 1049. 最后一块石头的重量 II 思路 最后一块石头的重量&#xff0c;两个近似的石头值相近&#xff0c;那么最后一块石头的重量最小 举例:stones [2,7,4,1,8,1] 总和sum23&#xff0c;我们取目标值targetsum/211&#xff0c;我…

常用的密码算法有哪些?

我们将密码算法分为两大类。 对称密码&#xff08;密钥密码&#xff09;——算法只有一个密钥。如果多个参与者都知道该密钥&#xff0c;该密钥 也称为共享密钥。非对称密码&#xff08;公钥密码&#xff09;——参与者对密钥的可见性是非对称的。例如&#xff0c;一些参与者仅…

[牛客]链表中倒数第k个结点

使用快慢指针法:两种思路:1.fast先向后走k-1次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点时,slow刚好在倒数第k个位置上;2.fast先向后走k次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点的后面时(此时为NULL),slow刚好在倒数第k个…