Myvatis关联关系映射与表对象之间的关系
目录
一、关联关系映射
1.1 一对一
1.2 一对多
1.3 多对多
二、处理关联关系的方式
2.1 嵌套查询
2.2 嵌套结果
三、一对一关联映射
3.1 建表
编辑 3.2 配置文件
3.3 代码生成
3.4 编写测试
四、一对多关联映射
五、多对多关联映射
六、小结
一、关联关系映射
MyBatis是一款优秀的持久层框架,它提供了强大的关联关系映射能力。在MyBatis中,我们可以使用XML或注解来定义关联关系映射。
1.1 一对一
一对一关联映射:
- 在XML中,我们可以使用<resultMap>元素来定义一对一关联映射,可以通过<association>来指定关联对象的映射规则。
- 注解中,可以使用@One注解来定义一对一关联映射。
1.2 一对多
一对多关联映射:
- 在XML中,我们可以使用<resultMap>元素来定义一对多关联映射,可以通过<collection>来指定关联对象集合的映射规则。
- 注解中,可以使用@Many注解来定义一对多关联映射
1.3 多对多
多对多关联映射:
- 在XML中,我们可以使用<resultMap>元素来定义多对多关联映射,可以通过<collection>来指定中间表关联对象的映射规则。
- 注解中,可以使用@Many注解来定义多对多关联映射
同时,MyBatis还提供了一些常见的关联关系映射的配置选项,例如延迟加载、级联操作等,可以根据具体需求进行配置。
总的来说,MyBatis的关联关系映射定义非常灵活,可以根据需求使用XML或注解来进行配置,提供了丰富的选项来满足不同场景下的需求。
二、处理关联关系的方式
在MyBatis中,处理关联关系的方式主要有两种:嵌套查询和嵌套结果。
2.1 嵌套查询
嵌套查询(Nested Selects):
这种方式是通过在SQL语句中使用子查询来实现关联查询。我们可以使用<collection>或<association>元素来配置关联关系。例如,在一个订单表中,可以通过子查询查询与订单相关的用户信息。
2.2 嵌套结果
嵌套结果(Nested Results):
这种方式是通过在查询结果中嵌套关联对象的结果集来实现关联查询。我们可以使用<resultMap>元素中的<association>或<collection>元素来配置关联关系。例如,在一个订单表和订单项表的关系中,可以将订单项作为订单对象的一个属性。
关联查询的处理方式取决于具体的需求和数据模型。嵌套查询适用于复杂的关联关系和需要在各部分之间添加额外条件的情况,而嵌套结果适用于简单的关联关系和需要携带完整对象信息的情况。
无论使用哪种方式,MyBatis都提供了灵活的配置选项来满足各种关联查询需求。使用MyBatis的关联映射机制,我们可以轻松地处理对象之间的关系,并在数据库操作中提供更强大的功能和效率。
三、一对一关联映射
3.1 建表
创建名为 t_hibernate_book (书籍表) 数据表
创建名为 t_hibernate_book_category (书籍类别表) 数据表
其中名为 bid 的属性字段为 t_hibernate_book (书籍表) 的 bid(主键) 的外键
其中名为 cid 的属性字段为 t_hibernate_category (类别表) 的 category_id (主键) 的外键
创建名为 t_hibernate_category (类别表) 数据表
创建名为 t_hibernate_order (订单表) 数据表
创建名为 t_hibernate_order_item (订单详情表) 数据表
其中名为 order_id 的属性字段为 t_hibernate_order (订单表) 的 oid (主键) 的外键
3.2 配置文件
修改名为 generatorConfig.xml 的 配置文件,修改后的所有代码如下 :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration><!-- 引入配置文件 --><properties resource="jdbc.properties"/><!--指定数据库jdbc驱动jar包的位置--><classPathEntry location="D:\\temp2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/><!-- 一个数据库一个context --><context id="infoGuardian"><!-- 注释 --><commentGenerator><property name="suppressAllComments" value="true"/><!-- 是否取消注释 --><property name="suppressDate" value="true"/> <!-- 是否生成注释代时间戳 --></commentGenerator><!-- jdbc连接 --><jdbcConnection driverClass="${jdbc.driver}"connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/><!-- 类型转换 --><javaTypeResolver><!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- 01 指定javaBean生成的位置 --><!-- targetPackage:指定生成的model生成所在的包名 --><!-- targetProject:指定在该项目下所在的路径 --><javaModelGenerator targetPackage="com.Kissship.model"targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加构造函数 --><property name="constructorBased" value="true"/><!-- 是否针对string类型的字段在set的时候进行trim调用 --><property name="trimStrings" value="false"/><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!-- 02 指定sql映射文件生成的位置 --><sqlMapGenerator targetPackage="com.Kissship.mapper"targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 03 生成XxxMapper接口 --><!-- type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象 --><!-- type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象 --><!-- type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 --><javaClientGenerator targetPackage="com.Kissship.mapper"targetProject="src/main/java" type="XMLMAPPER"><!-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --><property name="enableSubPackages" value="false"/></javaClientGenerator><!-- 配置表信息 --><!-- schema即为数据库名 --><!-- tableName为对应的数据库表 --><!-- domainObjectName是要生成的实体类 --><!-- enable*ByExample是否生成 example类 --><!--<table schema="" tableName="t_book" domainObjectName="Book"--><!--enableCountByExample="false" enableDeleteByExample="false"--><!--enableSelectByExample="false" enableUpdateByExample="false">--><!--<!– 忽略列,不生成bean 字段 –>--><!--<!– <ignoreColumn column="FRED" /> –>--><!--<!– 指定列的java数据类型 –>--><!--<!– <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> –>--><!--</table>--><table schema="" tableName="t_hibernate_book" domainObjectName="HBook"enableCountByExample="false" enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false"></table><table schema="" tableName="t_hibernate_category" domainObjectName="Category"enableCountByExample="false" enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false"></table><table schema="" tableName="t_hibernate_book_category" domainObjectName="HBookCategory"enableCountByExample="false" enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false"></table><table schema="" tableName="t_hibernate_order" domainObjectName="Order"enableCountByExample="false" enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false"></table><table schema="" tableName="t_hibernate_order_item" domainObjectName="OrderItem"enableCountByExample="false" enableDeleteByExample="false"enableSelectByExample="false" enableUpdateByExample="false"></table></context>
</generatorConfiguration>
3.3 代码生成
自动生成代码的目录列表如下:
然后将每个实体类对象里面重写一下toString()方法即可。
3.4 编写测试
创建一个 名为 OrderItemVo 的类,继承OrderItem类,及属性有Order对象
package com.Kissship.vo;import com.Kissship.model.Order;
import com.Kissship.model.OrderItem;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-10:24*/
public class OrderItemVo extends OrderItem {private Order order;public Order getOrder() {return order;}public void setOrder(Order order) {this.order = order;}
}
在自动生成的OrderItemMapper.xml配置文件中进行增加以下配置:
<resultMap id="OrderItemMap" type="com.Kissship.vo.OrderItemVo" ><result column="order_item_id" property="orderItemId" ></result><result column="product_id" property="productId" ></result><result column="quantity" property="quantity" ></result><result column="oid" property="oid" ></result><association property="order" javaType="com.Kissship.model.Order"><result column="order_id" property="orderId" ></result><result column="order_no" property="orderNo" ></result></association></resultMap><select id="selectByBiid" resultMap="OrderItemMap" parameterType="java.lang.Integer" >SELECT * FROMt_hibernate_order o ,t_hibernate_order_item oiWHERE o.order_id = oi.oidAND oi.order_item_id = #{oiid} </select>
在自动生成的 OrderItemMapper 接口中进行增加以下代码:
OrderItemVo selectByBiid(@Param("oiid") Integer oiid);
创建一个接口名为 : OrderItemBiz 接口
package com.Kissship.biz;import com.Kissship.vo.OrderItemVo;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-10:31*/ public interface OrderItemBiz {OrderItemVo selectByBiid(Integer oiid);}
实现以上创建的接口,创建一个实现了名为 OrderItemBizImpl 类
package com.Kissship.biz;import com.Kissship.mapper.OrderItemMapper; import com.Kissship.vo.OrderItemVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-10:42*/ @Service public class OrderItemBizImpl implements OrderItemBiz {@Autowiredprivate OrderItemMapper orderItemMapper;@Overridepublic OrderItemVo selectByBiid(Integer oiid) {return orderItemMapper.selectByBiid(oiid);} }
创建一个测试类 名为 Test01 ,用来进行方法测试
package com.Kissship.biz;import com.Kissship.vo.OrderItemVo; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-10:42*/ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring-context.xml"}) public class Test01 {@Autowiredprivate OrderItemBiz orderItemBiz;@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}@Testpublic void selectByBiid() {OrderItemVo orderItemVo = orderItemBiz.selectByBiid(27);System.out.println(orderItemVo);System.out.println(orderItemVo.getOrder());}}
执行测试类中selectByBiid()的方法,结果如图 :
四、一对多关联映射
创建一个 名为 OrdeVo 的类,继承Order类,及属性有List<OrderItem>集合
用来存储查询到的OrderItem对象,因为是一对多所有查询出有多个对象,如下:
package com.Kissship.vo;import com.Kissship.model.Order; import com.Kissship.model.OrderItem;import java.util.ArrayList; import java.util.List;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-10:24*/ public class OrderVo extends Order {private List<OrderItem> orderItems = new ArrayList<>();public List<OrderItem> getOrderItems() {return orderItems;}public void setOrderItems(List<OrderItem> orderItems) {this.orderItems = orderItems;} }
在自动生成的 OrderMapper.xml 配置文件中增加以下配置,如下:
<resultMap id="OrderVoMap" type="com.Kissship.vo.OrderVo"><result column="order_id" property="orderId" ></result><result column="order_no" property="orderNo" ></result><collection property="orderItems" ofType="com.Kissship.model.OrderItem"><result column="order_item_id" property="orderItemId" ></result><result column="product_id" property="productId" ></result><result column="quantity" property="quantity" ></result><result column="oid" property="oid" ></result></collection></resultMap><select id="selectByOid" resultMap="OrderVoMap" parameterType="java.lang.Integer" >SELECT * FROMt_hibernate_order o ,t_hibernate_order_item oiWHERE o.order_id = oi.oidAND o.order_id = #{oid}</select>
在自动生成的 OrderMapper接口中进行增加以下代码,如下:
OrderVo selectByOid(@Param("oid") Integer oid);
创建一个接口名为 : OrderBiz 接口
package com.Kissship.biz;import com.Kissship.vo.OrderVo;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:12*/ public interface OrderBiz {OrderVo selectByOid(Integer oid);}
在实现以上 OrderBiz 接口,创建一个实现类,名为 OrderBizImpl
package com.Kissship.biz;import com.Kissship.mapper.OrderMapper; import com.Kissship.vo.OrderVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:14*/ @Service public class OrderBizImpl implements OrderBiz {@Autowiredprivate OrderMapper orderMapper;@Overridepublic OrderVo selectByOid(Integer oid) {return orderMapper.selectByOid(oid);} }
在测试类( Test01 )中增加以下测试方法及接口:
@Autowiredprivate OrderBiz orderBiz;@Testpublic void selectByOid() {OrderVo orderVo = orderBiz.selectByOid(7);System.out.println(orderVo);orderVo.getOrderItems().forEach(System.out::println);}
执行其中的方法进行测试,结果为如图 :
五、多对多关联映射
在自动生成的 HBookMapper.xml 配置文件中增加以下配置:
<resultMap id="CategoryVoMap" type="com.Kissship.vo.CategoryVo"><result column="category_id" property="categoryId"></result><result column="category_name" property="categoryName"></result><collection property="hbooks" ofType="com.Kissship.model.HBook"><result column="book_id" property="bookId"></result><result column="book_name" property="bookName"></result><result column="price" property="price"></result></collection></resultMap><select id="selectByCategoryId" resultMap="CategoryVoMap" parameterType="java.lang.Integer" >SELECT * FROMt_hibernate_book b,t_hibernate_book_category bc ,t_hibernate_category cWHERE b.book_id = bc.bidAND bc.cid = c.category_idAND c.category_id = #{cid}</select>
在自动生成的 HBookMapper 接口 中增加以下方法:
HbookVo selectByBookId(@Param("bid") Integer bid);
创建一个接口名为 HBookBiz
package com.Kissship.biz;import com.Kissship.vo.HbookVo; import org.apache.ibatis.annotations.Param;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:25*/ public interface HBookBiz {HbookVo selecByBookId(@Param("bid") Integer bid);}
然后再实现以上 HBookBiz 接口,创建一个实现类,名为 HBookBizImpl
package com.Kissship.biz;import com.Kissship.mapper.HBookMapper; import com.Kissship.vo.HbookVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:26*/ @Service public class HBookBizImpl implements HBookBiz {@Autowiredprivate HBookMapper hBookMapper;@Overridepublic HbookVo selecByBookId(Integer bid) {return hBookMapper.selectByBookId(bid);} }
在测试类( Test01 )中增加以下测试方法及接口:
@Autowiredprivate HBookBiz hbookBiz;@Testpublic void selectByBookId() {HbookVo hBookVo = hbookBiz.selecByBookId(8);System.out.println(hBookVo);hBookVo.getCategories().forEach(System.out::println);}
执行其中的方法进行测试,结果为如图 :
在自动生成的 CategoryMapper.xml 配置文件中增加以下配置:
<resultMap id="CategoryVoMap" type="com.Kissship.vo.CategoryVo"><result column="category_id" property="categoryId"></result><result column="category_name" property="categoryName"></result><collection property="books" ofType="com.Kissship.model.HBook"><result column="book_id" property="bookId"></result><result column="book_name" property="bookName"></result><result column="price" property="price"></result></collection></resultMap><select id="selectByCategoryId" resultMap="CategoryVoMap" parameterType="java.lang.Integer" >SELECT * FROMt_hibernate_book b,t_hibernate_book_category bc ,t_hibernate_category cWHERE b.book_id = bc.bidAND bc.cid = c.category_idAND c.category_id = #{cid}</select>
在自动生成的 CategoryMapper 接口 中增加以下方法:
CategoryVo selectByCategoryId(@Param("cid") Integer cid);
创建一个接口名为 CategoryBiz
package com.Kissship.biz;import com.Kissship.vo.CategoryVo;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:37*/ public interface CategoryBiz {CategoryVo selectByCategoryId(Integer cid); }
然后再实现以上 CategoryBiz 接口,创建一个实现类,名为 CategoryBizImpl
package com.Kissship.biz;import com.Kissship.mapper.CategoryMapper; import com.Kissship.vo.CategoryVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** @author Kissship* @site www.Kissship.com* @company xxx公司* @create 2023-09-04-11:38*/ @Service public class CategoryBizImpl implements CategoryBiz {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic CategoryVo selectByCategoryId(Integer cid) {return categoryMapper.selectByCategoryId(cid);}}
在测试类( Test01 )中增加以下测试方法及接口
@Autowiredprivate CategoryBiz categoryBiz;@Testpublic void selectByCategoryId() {CategoryVo categoryVo = categoryBiz.selectByCategoryId(8);System.out.println(categoryVo);categoryVo.getHbooks().forEach(System.out::println);}
执行其中的方法进行测试,结果为如图 :
六、小结
- 使用 <resultMap> 元素配置结果集的映射关系,指定数据库列和 Java 对象属性之间的映射。
- 可以使用 <result> 元素将数据库列映射到 Java 对象的属性,并指定属性的类型、映射关系及相关配置。
- 可以使用 <association> 元素配置关联对象的映射关系,用于映射复杂对象之间的关系。
- 可以使用 <collection> 元素配置集合类型对象的映射关系,用于映射一对多或多对多的关系。
- 使用 <sql> 元素定义可重用的 SQL 片段,提供了组织和共享 SQL 语句的能力。
最后Myvatis关联关系映射与表对象之间的关系就到这里,祝大家在敲代码的路上一路通畅!
相关文章:

Myvatis关联关系映射与表对象之间的关系
目录 一、关联关系映射 1.1 一对一 1.2 一对多 1.3 多对多 二、处理关联关系的方式 2.1 嵌套查询 2.2 嵌套结果 三、一对一关联映射 3.1 建表 编辑 3.2 配置文件 3.3 代码生成 3.4 编写测试 四、一对多关联映射 五、多对多关联映射 六、小结 一、关联关系映射 …...
算法通关村第十四关:黄金挑战-数据流的中位数
黄金挑战-数据流的中位数 1.数据流中中位数的问题 LeetCode295 https://leetcode.cn/problems/find-median-from-data-stream/ 思路分析 中位数的问题,我们一般都可以用 大顶堆小顶堆 来求解 小顶堆(minHeap):存储所有元素中…...

【2023集创赛】国家集创中心杯三等奖:不对称轻失配运算放大器
本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)国家集创中心杯三等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电…...

手写Mybatis:第18章-一级缓存
文章目录 一、目标:一级缓存二、设计:一级缓存三、实现:一级缓存3.1 工程结构3.2 一级缓存类图3.3 一级缓存实现3.3.1 定义缓存接口3.3.2 实现缓存接口3.3.3 创建缓存KEY3.3.4 NULL值缓存key 3.4 定义缓存机制、占位符和修改配置文件3.4.1 定…...

哈夫曼编码实现文件的压缩和解压
程序示例精选 哈夫曼编码实现文件的压缩和解压 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《哈夫曼编码实现文件的压缩和解压》编写代码,代码整洁,规则࿰…...

解决六大痛点促进企业更好使用生成式AI,亚马逊云科技顾凡采访分享可用方案
亚马逊云科技大中华区战略业务发展部总经理顾凡在接受21世纪经济报道记者专访时表示,生成式人工智能将从四个方面为企业带来机遇:第一是创造全新的客户体验;第二是提高企业内部员工的生产力;第三是帮助企业提升业务运营效率&#…...
Qt 定时器放在线程中执行,支持随时开始和停止定时器。
前言:因为项目需要定时检查网络中设备是否能连通,需要定时去做ping操作,若是网络不通,则ping花费时间比较久(局域网大概4秒钟才能结束,当然如果设置超时时间啥的,也能很快返回,就是会…...
java 过滤器 接口(API)验证入参,验签(sign) Demo
java 过滤器 接口(API)验证入参,验签(sign) Demo 一、思路 1、配置yml文件; 2、创建加载配置文件类; 3、继承 OncePerRequestFilter 重写方法 doFilterInternal; 4、注册自定义过滤器; 二、步骤 1、配置yml文件; ###系…...
独家!微信正在灰测一款全新消金产品
来源 | 镭射财经(leishecaijing) 「镭射财经」独家获悉,微信将推出一款名为“微信分期”的新消费信贷产品,目前该产品正处于小范围灰测阶段,还未正式上线。上线后,微信将运营微信分付和微信分期两款自营消…...
阿秀C++笔记-学习记录
81.C中的组合和继承相比的优缺点 在C中组合一对象系用描述对象包对象系组一个拥对象例其变合类的含的现。这的量类当有员被创建。 以下一个示例,展示了在C中如何实现组合关系: class Engine {// Engine class definition... };class Car {Engine engi…...
前端入门到入土?
文章目录 前言http和https的区别,https加密的原理是?区别https的加密原理 TCP为什么要三次握手?proxy代理的原理?内存泄漏?什么是内存泄漏?为什么会有内存泄漏?内存泄漏的情况?如何防…...

架构设计基础设施保障IaaS之网络
目录 1 DNS运用1.1 DNS功能作用1.2 DNS配置实践 2 DNS生产最佳实践方案2.1 全球加速功能2.2 不同运营商的加速方案2.3 全球业务高可用方案2.4 跨地域负载均衡 3 DNS域名劫持解决方案4 CDN剖析4.1 CDN原理4.2 缓存过期配置处理流程4.3 缓存配置规则 5 CDN运用6 CDN最佳实践方案6…...

zabbix安装部署
前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…...
零碎的C++
构造函数和析构函数 构造函数不能是虚函数,而析构函数可以是虚函数。原因如下: 构造函数不能是虚函数,因为在执行构造函数时,对象还没有完全创建,还没有分配内存空间,也没有初始化虚函数表指针。如果构造…...

模糊测试面面观 | 模糊测试是如何发现异常情况的?
协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问…...

C#备份数据库文件
c#备份数据库文件完整代码 sqlServer 存储过程: USE [PSIDBase] GO /****** Object: StoredProcedure [dbo].[sp_BackupDB] Script Date: 2023/8/31 16:49:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOALTER procedure [dbo].[sp_BackupDB]…...

行军遇到各种复杂地形怎么处理?
行军遇到各种复杂地形怎么处理? 【安志强趣讲《孙子兵法》第30讲】 【原文】 凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。 【注释】 阳,太阳能照到的地方。阴,太阳照不到的地方。…...
Python Number(数字).............................................
Python Number 数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。 以下实例在变量赋值时 Number 对象将被创建: var1 1 var2 10您也可以使用del语句删除一些 Number 对象引用。 del语句…...

设置 Hue Server 与 Hue Web 界面之间的会话超时时间
设置 Hue Server 与 Hue Web 界面之间的会话超时时间 在 CDH 的 Hue 中,Auto Logout Timeout 参数表示用户在不活动一段时间后将自动注销(登出)的超时时间。当用户在 Hue 中处于不活动状态超过该设定时间时,系统将自动注销用户&am…...

openGauss学习笔记-57 openGauss 高级特性-并行查询
文章目录 openGauss学习笔记-57 openGauss 高级特性-并行查询57.1 适用场景与限制57.2 资源对SMP性能的影响57.3 其他因素对SMP性能的影响57.4 配置步骤 openGauss学习笔记-57 openGauss 高级特性-并行查询 openGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...