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…

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;暂停当…

Pandas实战100例-专栏介绍

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

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…

一文带你了解注册信息安全专业人员CISP

CISP即"注册信息安全专业人员"&#xff0c;系国家对信息安全人员资质的最高认可。英文为Certified Information Security Professional (简称CISP)&#xff0c;CISP系经中国信息安全测评中心实施国家认证。 CISP证书涵盖方向&#xff1a; “注册信息安全工程师”&a…

kafka之java客户端实战

1. kafka的客户端 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&#xff0c;是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管理Kafka的运行细节&#xff0c;Pa…

Manjora 中使用idm,linux通用

说明 在Mnajora中的idm需要在wine中运行&#xff0c;idm是一款很不错的下载工具&#xff0c;但是在linux不能直接使用&#xff0c;借助wine也无法使用浏览器的集成插件&#xff0c;在网上偶然发现一款第三方插件能够在linux的浏览器中将链接捕捉到idm中&#xff0c;虽然使用起…

git安装教程 Windows 附安装包链接

Git是一款分布式源代码管理工具(版本控制工具) 。 git的作用 当你需要做一个大工程的时候&#xff0c;文件的管理无疑是非常庞大的工作&#xff0c;因为你需要不断的修改更新文件内容&#xff0c;同时可能还要保留旧版本保证可以复原&#xff0c;这样就需要备份多个版本的文件…

计网期末复习(一)

计网期末复习&#xff08;一&#xff09; – WhiteNights Site 标签&#xff1a;计算机网络 诶&#xff0c;期末。诶&#xff0c;复习。 TCP/IP参考模型的网络层提供的是&#xff1f; 区别于传输层&#xff0c;网络层提供不可靠无连接的数据报服务 当时看到TCP/IP就选了可靠有…

RT-Thread学习(一)简介及基础环境配置

系列文章目录 文章目录 系列文章目录前言简要介绍配置环境修改工作时钟更改ROM空间添加FinSH串口命令提示 前言 之前学习了FreeRTOS&#xff0c;但是一直想深入学习&#xff0c;但是没有人指导&#xff0c;又不知道该如何学习&#xff0c;于是再学习一个操作系统看看情况。 简…

Docker安装Odoo17

Docker安装Odoo 前言所需环境安装步骤登录Odoo 配置数据库 前言 Odoo是一个开源的ERP框架&#xff0c;它提供了一套完整的、可定制的、模块化的企业管理软件解决方案。以下是Odoo的主要特点&#xff1a; 模块化设计&#xff1a;Odoo的各个功能都以模块的形式提供&#xff0c;包…