MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql

 

目录

打印MyBatis的日志配置:

灰度发布:指发布环境,比如发布环境有200台机器,发布的时候是一批一批的机器的发布

2.删除与修改

使用@Results注解,这样就和上面的别名一个意思,column是数据库的列

自动转驼峰(优雅,最推荐使用)

学习XML的方式


 //数据库建表代码
CREATE TABLE userInfo (id INT NOT NULL AUTO_INCREMENT,username VARCHAR(127) NOT NULL,password VARCHAR(127) NOT NULL,age INT,gender INT,phone VARCHAR(15),delete_flag INT,create_time DATETIME DEFAULT NOW(),update_time DATETIME DEFAULT NOW(),PRIMARY KEY (id)
);

MyBatis:用于去简化数据库操作

1.引入依赖

  <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency>

2.配置数据库

spring:datasource:
#    java100对应的意思是创建的数据库的名称url: jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8&useSSL=falseusername: rootpassword: lcl15604007179driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true  #自动驼峰转换

云服务器其实也是一个机器。

打印MyBatis的日志配置:

因为日志肯定也是影响性能的,打印的日志越多,受影响越大

//只出现开发的环境中,不要出现在线上环境
//开发环境(本地开发,一些公司也会提供单独的服务器让员工进行开发调试) -(有开发环境的数据库)//测试环境(给测试人员使用的)。   测试环境的数据库/配置等下面两个通常使用同一个数据库
//预发布环境(和线上环境一样,但是不对外提供服务)
//发布环境(线上环境)
mybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true  #自动驼峰转换

灰度发布:指发布环境,比如发布环境有200台机器,发布的时候是一批一批的机器的发布

通常刚开始就发布一台,也就是1/200的流量进入了,观察一段时间之后,继续观察,如果没有问题,就会继续发布(可能发布20台) 

发布=上线

如何获取自增id,使用注解(注意哈,你这个自增id使用前,要保证,建表,他的那个表的这个属性是自增主键,不然,他并不会给你加主键,换句话说他会一直都是空的状态,它更像是用来获取自增的主键值,因为我们进行插入的时候,因为已经在表内设置了自增主键,就算你不是这么插入的,也还会是有自增的效果)

参数为对象是对参数进行重命名:

如果你重命名了

2.删除与修改

//删除数据库内容
@Delete("delete from userInfo where id=#{id}")Integer delete(Integer id);
//修改数据库内容
@Update("update userInfo set age=#{age} where id=#{id}")Integer update(UserInfo userInfo);//下面是测试代码@Testvoid delete() {userInfoMapper.delete(1);}@Testvoid update() {UserInfo userInfo=new UserInfo();userInfo.setAge(8);userInfo.setId(3);Integer result=userInfoMapper.update(userInfo);if(result>0){log.info("恭喜成功");}}

查询的问题:(create_time对应实体中createTime,面对这种情况的解决方法)

但是在开发中,属性名字和字段名字不一样是很常见的,我们该怎么办呢?

使用*和不用*效率不同,全量字段就全部写一遍即可。

使用@Results注解,这样就和上面的别名一个意思,column是数据库的列

但是一直这样也很麻烦,难道我执行一个查询,就要去写这么多东西?

于是产生了复用

自动转驼峰(优雅,最推荐使用)

mybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true  #自动驼峰转换

以上的方式的结果,都可以获取这个值

学习XML的方式

1.需要配置对应数据库

2.指明xml路径(结尾,必须是Mapper结尾,前面的**表示前缀任意,换句话说我们后面其实Mapper都可以不用写,但是写一下更规范肯定还是)

此时定义了一个UserInfoXML的类,那么那个类的xml文件就应该和这个类名字相同,然后写下面代码,就是一个简单的xml查询操作啦。

<?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.example.myBatis.mapper.UserInfoXMLMapper"><select id="selectAll" resultType="com.example.myBatis.mapper.UserInfo">select *from userinfo;</select>
</mapper>

类里面的代码

package com.example.myBatis.mapper;
import org.apache.ibatis.annotations.Mapper;import java.util.List;
@Mapper
//容器
public interface UserInfoXMLMapper  {List<UserInfo> selectAll() ;
}

对应的Test代码

package com.example.myBatis.mapper;import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@Slf4j                 //用于输出日志       可以避免写log...很多的代码
@SpringBootTest        //用于让Test文件有权限来访问Spring项目
class UserInfoXMLMapperTest {
//属性注入@Autowiredprivate UserInfoXMLMapper userInfoXMLMapper;@Testvoid selectAll() {List<UserInfo>userInfos=userInfoXMLMapper.selectAll();log.info(userInfos.toString());}
}

⚠️:很严重的问题:我调了两天才发现,我们在导入MyBatis的时候,有可能她就会自动在properties这个文件中,写关于MyBatis的xml路径,这样就会和我们在yml里面写的不同,也就会造成冲突,所以说当出现路径不匹配,并且你自己写的路径也都没毛病的时候,不妨再看看properties文件(真的难找,因为肯定没在properties这个文件写路径,所以也不回去怀疑)

1.增:(还是先定义方法)

 <insert id="insert">insert  into userInfo(username,password,age,gender,phone)values(#{username},#{password},#{age},#{gender},#{phone})</insert>

懒得写了,反正挺简单,一个类,一个xml,一个test测试一下就好啦

​​​​​​​

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

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

相关文章

学习资料: uni-app HBuilderX

编译器&#xff1a;HBuilderX HBuilderX-高效极客技巧 uni-app介绍&#xff1a;uni-app官网 uni-app 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序&#…

根据gbt81702008数值修约的C#函数

#region 修约函数/// </summary>/// <param name"data_val">输入数值</param>/// <param name"len">保留几位小数</param>/// <returns></returns>public static decimal round_gbt8170(decimal data_val,int l…

投手最核心的能力是什么?

巨量广告的本质是用户体验和流量成本 广告投放系统升级的越智能说明三点&#xff1a; 1: 流量顶到天了 2: 系统对用户人群价值计算的准确度提高 3&#xff1a;素材越来越卷 而对于投手来说&#xff1a; 入行门槛降低&#xff0c;操作层面简单&#xff0c;系统能用算法集合…

Unity组件开发--UI管理器

1.Canvas组件&#xff1a; 注意属性&#xff1a; &#xff08;1&#xff09;渲染模式是&#xff1a;屏幕空间相机 &#xff08;2&#xff09;创建一个UICamera节点&#xff0c;管理相机 &#xff08;3&#xff09;屏幕画布缩放模式 &#xff08;4&#xff09;画布下挂载两…

Android-基础

Activity生命周期 1.启动Activity&#xff1a;系统会先调用onCreate方法&#xff0c;然后调用onStart方法&#xff0c;最后调用onResume&#xff0c;Activity进入运行状态。 2.当前Activity被其他Activity覆盖其上或被锁屏&#xff1a;系统会调用onPause方法&#xff0c;暂停当…

linux批量查杀进程

linux批量查杀进程 方案1&#xff1a;killall killall 命令来杀掉所有指定名称的进程。 killall -9 uwsgi这将会杀掉所有名称为 uwsgi 的进程&#xff0c;包括在后台运行的进程。 注意&#xff0c;使用 killall 命令要小心&#xff0c;因为它可能会误杀其他不相关的进程。在…

WiFi7: MLO操作之AP MLD的发现—AP的行为

原文:如果AP是AP MLD的transmitted BSSID,那么Beacon帧和Probe Response 帧必须在Reduced Neighbor Report element中包含对应各AP的TBTT Information域,并将TBTT Information Length域设置为16或者更高(见9.4.2.169.2(Neighbor AP Information field))。FILS Discovery帧…

华为HCIE课堂笔记第十五章 IPv6过渡技术

第十五章 IPv6过渡技术 15.1 简介 1、隧道技术 2、双栈技术 3、地址转换技术 15.2 隧道技术 15.2.1 ipv6 over ipv4 隧道 手工隧道&#xff1a;IPv6 Over IPv4隧道 Ipv6 Over IPv4&#xff1a;IPv6孤岛通过IPv4网络之间进行通信&#xff0c;IPv6的报文封装IPv4报文之上…

测试人员必备基本功(3)

容易被忽视的bug 第三章 查询列表容易被忽视的bug 文章目录 容易被忽视的bug第三章 查询列表容易被忽视的bug 前言1.查询角色2.接口设计 三、测试设计1.测试点2.容易发现bug的测试点如下&#xff1a; 总结 前言 一个WEB系统的所有功能模块&#xff0c;其实都是围绕“增、删、…

Pandas实战100例-专栏介绍

Pandas&#xff0c;Python数据科学的心脏&#xff0c;是探索和分析数据世界的强大工具。想象一下&#xff0c;用几行代码就能洞察庞大数据集的秘密&#xff0c;无论是金融市场趋势还是社交媒体动态。 通过Pandas&#xff0c;你可以轻松地整理、清洗、转换数据&#xff0c;将杂…

Neo4j Cypher (1):使用Cypher删除边

在Neo4j中&#xff0c;删除边&#xff08;即关系&#xff09;可以通过使用Cypher查询语言来实现。关系可以基于其类型、属性或者它连接的节点来指定和删除。以下是一些删除关系的常见方法&#xff1a; 1. 删除特定类型的关系 如果您知道关系的类型&#xff0c;可以使用以下查…

山西电力市场日前价格预测【2024-01-15】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-15&#xff09;山西电力市场全天平均日前电价为399.10元/MWh。其中&#xff0c;最高日前电价为583.33元/MWh&#xff0c;预计出现在18:15。最低日前电价为275.09元/MWh&#xff0c;预计…

【MySQL】:探秘主流关系型数据库管理系统及SQL语言

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. MySQL概述1.1 数据库相关概念1.2 主流数据库1.3 数据模型1.3.1 关系型数据库…

MyBatis第三课

目录 回顾 #和$区别 #&#xff08;预编译SQL&#xff09;和$&#xff08;即时SQL&#xff0c;它是进行的字符串拼接&#xff09;的区别&#xff0c;其中之一就是预编译SQL和即时SQL的区别 原因&#xff1a; 回顾 两者的共同点 MaBits可以看作是Java程序和Mysql的沟通桥梁&…

uniapp导航栏组件如何使用

在uni-app中&#xff0c;可以使用官方提供的uni-navigator组件来实现导航栏的功能。 具体使用步骤如下&#xff1a; 在App.vue文件中&#xff0c;引入uni-navigator组件&#xff1a; <template><view><uni-navigator /><router-view /></view>…

VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络

VMware workstation安装debian-12.1.0虚拟机&#xff08;最小化安装&#xff09;并配置网络 Debian 是一个完全自由的操作系统&#xff01;Debian 有一个由普罗大众组成的社区&#xff01;该文档适用于在VMware workstation平台安装最小化安装debian-12.1.0虚拟机。 1.安装准…

Linux Ubuntu搭建我的世界Minecraft服务器实现好友远程联机MC游戏

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

制造领域 基础概念快速入门介绍

1、基本背景知识 本定义结合国家标准文件有所发挥&#xff0c;仅供参考。 产品&#xff1a;是生产企业向用户或市场以商品形式提供的制成品&#xff1b; 成套设备&#xff1a;在生产企业一般不用装配工序连接&#xff0c;但用于完成相互联系的使用功能的两个或两个以上的产…

【快速解决】保姆级Anaconda安装教程

目录 第一步 ​编辑第二步 ​编辑第三步 第四步 第五步 第六步 ​编辑 第七步 第八步 第九步 第一步 在anaconda清华大学开源软件镜像站下载anaconda。点击这里进入 我这里选的是windows-x86_64。 第二步 下载好以后进行安装 第三步 第四步 第五步 选择…

SpringBoot集成Skywalking实现分布式链路追踪

官方网址&#xff1a; Apache SkyWalking官方文档&#xff1a; SkyWalking 极简入门 | Apache SkyWalking下载地址&#xff1a;Downloads | Apache SkyWalking Agent&#xff1a;以探针的方式进行请求链路的数据采集&#xff0c;并向管理服务上报&#xff1b; OAP-Service&am…