Mybatis进阶(映射关系一对一 )

文章目录

    • 1.基本介绍
        • 1.基本说明
        • 2.映射方式
    • 2.配置xml方式(多表联查)
        • 1.数据库表设计
        • 2.新建子模块
          • 1.创建子模块
          • 2.创建基本结构
        • 3.MyBatisUtils.java和jdbc.properties和mybatis-config.xml与原来的一致
        • 4.IdenCard.java
        • 5.Person.java
        • 6.IdenCardMapper.java
        • 7.IdenCardMapper.xml(名字需要与前面的接口名相同!!!)
        • 8.IdenCardMapperTest.java测试
        • 9.PersonMapper.java
        • 10.PersonMapper.xml(一对一关系体现)
        • 11.测试PersonMapperTest.java
        • 12.查询优化
        • 13.对一对一关系的理解
          • 1.对IdenCard和Person属性的分析
            • 1.IdenCard
            • 2.Person
          • 2.查询出来的结果
    • 3.配置xml方式(多表联查分解为单表操作)
        • 1.PersonMapper.java添加方法
        • 2.PersonMapper.xml添加查询
        • 3.测试
    • 4.注解方式
        • 1.基本介绍
        • 2.代码实现
        • 1.IdenCardMapperAnnotation.java
        • 2.PersonMapperAnnotation.java
        • 3.PersonMapperAnnotationTest.java测试
    • 5.注意事项和细节
        • 1.表是否设置外键,对MyBatis级联映射没有影响
        • 2.关于ResultMap
    • 6.课后练习
        • 1.IdenCard.java添加属性Person用来关联person表
        • 2.IdenCardMapper.java添加方法
        • 3.IdenCardMapper.xml添加实现类
        • 4.PersonMapper.java根据card_id查询
        • 5.PersonMapper.xml添加实现类
        • 6.测试IdenCardMapperTest.java
    • 7.一对一映射总结(idencard和person)
        • 1.设计表
          • idencard表字段
          • person表字段
          • 分析映射关系(person -> idencard)
        • 2.设计bean(person -> idencard)
          • Idencard
          • Person
        • 3.设计查询
          • 根据person的id查询时级联查询idencard,返回一个Person对象
        • 4.映射(idencard -> person)
          • 1.设计bean
          • 2.设计查询
            • 根据idencard的id查询时级联查询person,返回一个Idencard对象

1.基本介绍

1.基本说明

image-20240305184650313

2.映射方式

image-20240305184825137

2.配置xml方式(多表联查)

image-20240305185156581

1.数据库表设计
-- 记录身份证的表
CREATE TABLE idencard(
id INT PRIMARY KEY auto_increment,
card_sn VARCHAR(32) NOT NULL DEFAULT ''
);
INSERT INTO idencard VALUES(1, '111111000');

-- 记录个人信息的表
CREATE TABLE person(
id INT PRIMARY KEY auto_increment,
name VARCHAR(32) NOT NULL,
card_id INT,
FOREIGN KEY (card_id) REFERENCES idencard(id)
);
INSERT INTO person VALUES(1, '牛魔王', 1);

2.新建子模块
1.创建子模块

image-20240305191310416

2.创建基本结构

image-20240305195323326

3.MyBatisUtils.java和jdbc.properties和mybatis-config.xml与原来的一致
4.IdenCard.java
package com.sun.entity;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class IdenCard {
    private Integer id;
    private String card_sn;

    public IdenCard() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCard_sn() {
        return card_sn;
    }

    public void setCard_sn(String card_sn) {
        this.card_sn = card_sn;
    }

    @Override
    public String toString() {
        return "IdenCard{" +
                "id=" + id +
                ", card_sn='" + card_sn + '\'' +
                '}';
    }
}

5.Person.java
package com.sun.entity;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class Person {
    private Integer id;
    private String name;
    private IdenCard card; //这个名称随意,因为后面是要通过映射

    public Person() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public IdenCard getCard() {
        return card;
    }

    public void setCard(IdenCard card) {
        this.card = card;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", card=" + card +
                '}';
    }
}

6.IdenCardMapper.java
package com.sun.mapper;

import com.sun.entity.IdenCard;

/**
 * @author 孙显圣
 * @version 1.0
 */
public interface IdenCardMapper {
    public IdenCard getIdenCardById(Integer id);
}

7.IdenCardMapper.xml(名字需要与前面的接口名相同!!!)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--指定该xml文件和哪个接口对应-->
<mapper namespace="com.sun.mapper.IdenCardMapper">
    <!--public IdenCard getIdenCardById(Integer id);-->
    <select id="getIdenCardById" resultType="IdenCard" parameterType="Integer">
        SELECT *
        FROM idencard
        WHERE id = #{id}
    </select>
</mapper>
8.IdenCardMapperTest.java测试
import com.sun.entity.IdenCard;
import com.sun.mapper.IdenCardMapper;

import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class IdenCardMapperTest {
    //两个属性
    private SqlSession sqlSession; //相当于连接
    private IdenCardMapper idenCardMapper;

    //编写方法完成初始化
    @Before //标注了Before之后表示了在执行目标测试方法前会执行该方法
    public void init() {
        //获取到sqlSession
        sqlSession = MyBatisUtils.getSqlSession();
        //获取到MonsterMapper对象
        idenCardMapper = sqlSession.getMapper(IdenCardMapper.class);
        System.out.println(idenCardMapper.getClass());
    }
    @Test
    public void getIdenCardById() {
        IdenCard idenCardById = idenCardMapper.getIdenCardById(1);
        System.out.println(idenCardById);

        if (sqlSession != null) {
            sqlSession.close();
        }
    }
}

image-20240305195715472

9.PersonMapper.java
package com.sun.mapper;

import com.sun.entity.Person;

/**
 * @author 孙显圣
 * @version 1.0
 */
public interface PersonMapper {
    public Person getPersonById(Integer id);
}

10.PersonMapper.xml(一对一关系体现)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--指定该xml文件和哪个接口对应-->
<mapper namespace="com.sun.mapper.PersonMapper">
    <!--返回结果集
        将查询到的结果封装到Person对象里,在Person对象的属性有
            private Integer id; person表的id
            private String name; person表的name
            private IdenCard card; person表的card_id
            一个card_id就可以找到一个IdenCard对象,也就是一个idencard表的一条记录,
            所以就使用了这个IdenCard对象来替换原来的card_id,如果将结果封装到这个Person对象中
            则应该显示的表字段为:id(person表的id) name(person表的name) id(idencard表的id) card_sn(idencard表的card_sn)
            这样就舍弃掉了原来person表的card_id字段,可以认为这两个表中person表是主表
    -->
    <resultMap id="getPersonByIdResult" type="Person">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="card" javaType="IdenCard">
            <result property="id" column="id"/>
            <result property="card_sn" column="card_sn"/>
        </association>
    </resultMap>
    <!--public Person getPersonById(Integer id);-->
    <select id="getPersonById" parameterType="Integer" resultMap="getPersonByIdResult">
        SELECT *
        FROM person,
             idencard
        WHERE person.card_id = idencard.id
          AND person.id = #{id}
    </select>

</mapper>

11.测试PersonMapperTest.java
import com.sun.entity.Person;
import com.sun.mapper.IdenCardMapper;
import com.sun.mapper.PersonMapper;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class PersonMapperTest {
    //两个属性
    private SqlSession sqlSession; //相当于连接
    private PersonMapper personMapper;

    //编写方法完成初始化
    @Before //标注了Before之后表示了在执行目标测试方法前会执行该方法
    public void init() {
        //获取到sqlSession
        sqlSession = MyBatisUtils.getSqlSession();
        //获取到MonsterMapper对象
        personMapper = sqlSession.getMapper(PersonMapper.class);
        System.out.println(personMapper.getClass());
    }
    @Test
    public void getPersonById() {
        Person personById = personMapper.getPersonById(1);
        System.out.println(personById);
    }
}

image-20240305210043758

12.查询优化

image-20240305211114063

13.对一对一关系的理解
1.对IdenCard和Person属性的分析
1.IdenCard
  • id属性对应表的id字段
  • card_sn属性对应表的card_sn字段

image-20240305210408972

2.Person
  • id属性对应表的id字段
  • name属性对应表的name字段
  • **card属性:**原本的person表应该是一个card_id字段,但是这个card_id字段是可以映射到idencard表的一条记录即在java中的IdenCard对象,所以使用这个对象来替代了原来的card_id字段

image-20240305210318752

2.查询出来的结果

image-20240305210837571

  • 可以看出这个上面的结果只有四个字段,也就是删除了person表中原有的card_id字段!

image-20240305210212573

3.配置xml方式(多表联查分解为单表操作)

1.PersonMapper.java添加方法
    public Person getPersonById2(Integer id);
2.PersonMapper.xml添加查询
    <!--2.获取到了查询到的值Columns: id, name, card_id(外键)-->
    <resultMap id="getPersonByIdResult2" type="Person">
        <!--3.将查询到的id值调用Person对象的setId方法赋值-->
        <id property="id" column="id"/>
        <!--4.将查询到的name值调用Person对象的setName方法赋值-->
        <result property="name" column="name"/>
        <!--5.将查询到的card_id值作为参数,传给select语句调用的方法-->
        <!--6.select语句将返回的Card对象封装到card属性中-->
        <association property="card" column="card_id" select="com.sun.mapper.IdenCardMapper.getIdenCardById"/>
    </resultMap>
    <!--1.可以理解为这里将查询到的值给了id为getPersonByIdResult2的resultMap-->
    <select id="getPersonById2" parameterType="Integer" resultMap="getPersonByIdResult2">
        select * from person where id = #{id}
    </select>
3.测试

image-20240305220418082

4.注解方式

1.基本介绍

image-20240306085032938

2.代码实现
1.IdenCardMapperAnnotation.java
package com.sun.mapper;

import com.sun.entity.IdenCard;
import org.apache.ibatis.annotations.Select;

/**
 * @author 孙显圣
 * @version 1.0
 */
public interface IdenCardMapperAnnotation {
    @Select("select * from `idencard` where `id` = #{id}")
    public IdenCard getIdenCardById(Integer id);
}


2.PersonMapperAnnotation.java
package com.sun.mapper;

import com.sun.entity.Person;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

/**
 * @author 孙显圣
 * @version 1.0
 */
public interface PersonMapperAnnotation {
    @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "name", column = "name"),
            //将查询到的card_id作为入参传给getIdenCardById方法,最后返回一个Card对象,然后调用setter方法封装到card
            @Result(property = "card", column = "card_id", one = @One(select = "com.sun.mapper.IdenCardMapperAnnotation.getIdenCardById"))
    }
    )
    //根据id查询Person表
    @Select("select * from `person` where id = #{id}")
    public Person getPersonById(Integer id);
}

3.PersonMapperAnnotationTest.java测试
import com.sun.entity.Person;
import com.sun.mapper.PersonMapper;
import com.sun.mapper.PersonMapperAnnotation;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class PersonMapperAnnotationTest {
    //两个属性
    private SqlSession sqlSession; //相当于连接
    private PersonMapperAnnotation personMapperAnnotation;

    //编写方法完成初始化
    @Before //标注了Before之后表示了在执行目标测试方法前会执行该方法
    public void init() {
        //获取到sqlSession
        sqlSession = MyBatisUtils.getSqlSession();
        //获取到MonsterMapper对象
        personMapperAnnotation = sqlSession.getMapper(PersonMapperAnnotation.class);
        System.out.println(personMapperAnnotation.getClass());
    }
    @Test
    public void PersonMapperAnnotation() {
        Person personById = personMapperAnnotation.getPersonById(1);
        System.out.println(personById);
        if (sqlSession != null) {
            sqlSession.close();
        }
    }

}

image-20240306092007450

5.注意事项和细节

1.表是否设置外键,对MyBatis级联映射没有影响
2.关于ResultMap
  • MyBatis默认机制是调用查询到的列名的setter方法给返回的类型对象的属性赋值,但是如果列名与属性名不对应就只能使用ResultMap来进行映射
  • ResultMap中的column属性实际上指的是查询到的结果的列名,如果有别名则这个列就应该对应这个别名
  • 如果有select属性,则指的是将这个column的值传给select属性对应的方法并得到返回值,然后调用property属性的setter方法为其赋值

image-20240306092330326

6.课后练习

image-20240306111556037

1.IdenCard.java添加属性Person用来关联person表
  • 由于person表的card_id对应于idencard表的id,所以数据表不需要变化
package com.sun.entity;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class IdenCard {
    private Integer id;
    private String card_sn;
    private Person person; //IdenCard的id对应Person的card_id

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public IdenCard() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCard_sn() {
        return card_sn;
    }

    public void setCard_sn(String card_sn) {
        this.card_sn = card_sn;
    }

    @Override
    public String toString() {
        return "IdenCard{" +
                "id=" + id +
                ", card_sn='" + card_sn + '\'' +
                ", person=" + person +
                '}';
    }
}

2.IdenCardMapper.java添加方法
    public IdenCard getIdenCardById2(Integer id);
3.IdenCardMapper.xml添加实现类
  • 首先根据id查询idencard表的id和card_sn
  • 将查询到的结果填充到IdenCard的id和card_sn属性中
  • 再使用id调用person表的方法,当作person表的card_id来查到person表的数据并填充到IdenCard的Person属性中
    <!--public IdenCard getIdenCardById2(Integer id);-->
    <resultMap id="getIdenCardById2ResultMap" type="IdenCard">
        <id property="id" column="id"/>
        <result property="card_sn" column="card_sn"/>
        <association property="person" column="id" select="com.sun.mapper.PersonMapper.findByCard_Id"/>
    </resultMap>
    <!--public IdenCard getIdenCardById(Integer id);-->
    <select id="getIdenCardById2" resultMap="getIdenCardById2ResultMap" parameterType="Integer">
        SELECT *
        FROM idencard
        WHERE id = #{id}
    </select>
4.PersonMapper.java根据card_id查询
    //根据card_id查询person
    public Person findByCard_Id(Integer card_id);
5.PersonMapper.xml添加实现类
    <!--public Person findByCard_Id(Integer card_id);-->
    <select id="findByCard_Id" parameterType="Integer" resultType="Person">
        SELECT * FROM person WHERE card_id = #{card_id}
    </select>
6.测试IdenCardMapperTest.java
import com.sun.entity.IdenCard;
import com.sun.mapper.IdenCardMapper;

import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 孙显圣
 * @version 1.0
 */
public class IdenCardMapperTest {
    //两个属性
    private SqlSession sqlSession; //相当于连接
    private IdenCardMapper idenCardMapper;

    //编写方法完成初始化
    @Before //标注了Before之后表示了在执行目标测试方法前会执行该方法
    public void init() {
        //获取到sqlSession
        sqlSession = MyBatisUtils.getSqlSession();
        //获取到MonsterMapper对象
        idenCardMapper = sqlSession.getMapper(IdenCardMapper.class);
        System.out.println(idenCardMapper.getClass());
    }
    @Test
    public void getIdenCardById2() {
        IdenCard idenCardById2 = idenCardMapper.getIdenCardById2(1);
        System.out.println(idenCardById2);
        if (sqlSession != null) {
            sqlSession.close();
        }
    }


}

image-20240306134453671

7.一对一映射总结(idencard和person)

1.设计表
idencard表字段
  • id
  • card_sn
person表字段
  • id
  • name
  • card_id
分析映射关系(person -> idencard)
  • 一个person对应一个idencard
  • 表person添加字段card_id来映射idencard表的id
2.设计bean(person -> idencard)
Idencard
  • id
  • card_sn
Person
  • id
  • name
  • Idencard(映射idencard表)
3.设计查询
根据person的id查询时级联查询idencard,返回一个Person对象
  • 首先根据person的id查询到
    • id(填充到Person)
    • name(填充到Person)
    • card_id
  • 再根据person的card_id查询idencard表
    • id(填充到Idencard对象)
    • card_sn(填充到Idencard对象)
  • 将Idencard对象封装到Person对象的属性
4.映射(idencard -> person)
1.设计bean
  • 由于idencard的id对应person的card_id
  • 所以表不需要变化
  • idencard 的bean添加字段Person映射表person
2.设计查询
根据idencard的id查询时级联查询person,返回一个Idencard对象
  • 首先根据idencard的id查询
    • id(填充到Idencard)
    • card_sn(填充到Idencard)
  • 然后根据查询到的id,查询person表的card_id字段
    • id(填充到Person对象)
    • name(填充到Person对象)
    • card_id
  • 将Person对象封装到Idencard对象的属性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 uni-app 开发 iOS 应用的操作步骤

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;上一期和大家一起探讨了使用uniapp开发iOS应用的优势及劣势之后有许多小伙伴想要尝试使用uniapp开发iOS应用&#xff0c;但是却不懂如何使用uniapp开发iOS应用&#xff0c;所以这一期淼淼就来给你们分享…

TCP三次握手,四次挥手

TCP三次握手 TCP协议 &#xff1a; 1。源端口 &#xff1a;当前的进程端口&#xff0c;2字节 2。目的端口&#xff1a;对方的端口 &#xff0c;2字节 3。序号&#xff1a;客户端或者服务器端生成的随机数 4.确认序号&#xff1a;确认上一次发送给数据对方有没有收到 5.标志…

三数之和细节

这道题看着简单&#xff0c;但是有细节要注意&#xff0c;不能有重复的三元组&#xff0c;我们也不能一开始的时候把重复的元素去除&#xff0c;如果全都是0的话&#xff0c;那么就删除的只剩下一个0了&#xff0c;显然答案是[0,0,0] class Solution { public:vector<vecto…

Jetpack Compose简介

文章目录 Jetpack Compose简介概述声明式UI和命令式UIJetpack Compose和Android View对比Compose API设计原则一切皆为函数组合优于继承单一数据源 Jetpack Compose和Android View关系使用ComposesetContent()源码ComposablePreview Jetpack Compose简介 概述 Jetpack Compos…

用龙梦迷你电脑福珑2.0做web服务器

用龙梦迷你电脑福珑2.0上做web服务器是可行的。已将一个网站源码放到该电脑&#xff0c;在局域网里可以访问网站网页。另外通过在同一局域网内的一台windows10电脑上安装花生壳软件&#xff0c;也可以在外网访问该内网服务器网站网页。该电脑的操作系统属于LAMP。在该电脑上安装…

【python】python标准化考试系统[单项选择题 简易版](源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

docker挂载数据卷-以nginx为例

目录 一、什么是数据卷 二、数据卷的作用 三、如何挂载数据卷 1、创建nginx容器挂载数据卷 2、查看数据卷 3、查看数据卷详情 4、尝试在宿主机修改数据卷 5、查看容器内对应的数据卷目录 6、 访问nginx查看效果 ​​​​​​​一、什么是数据卷 挂载数据卷本质上就是实…

基于springboot实现公司日常考勤系统项目【项目源码+论文说明】

基于springboot实现公司日常考勤系统演示 摘要 目前社会当中主要特征就是对于信息的传播比较快和信息内容的安全问题&#xff0c;原本进行办公的类型都耗费了很多的资源、传播的速度也是相对较慢、准确性不高等许多的不足。这个系统就是运用计算机软件来完成对于企业当中出勤率…

Unity3D初级实战项目之方块跑酷

目录 初始化项目开发环境初始化项目屏幕自适应 游戏UI界面元素布局开始界面UI角色选择&#xff08;商城&#xff09;界面UI游戏界面UI 地图生成算法之菱形布局Resources资源加载代码生成地图菱形布局 地图生成算法之墙壁边界菱形地图双排布局地图瓷砖颜色美化墙壁边界生成 地图…

git提交错了?别慌,直接删除提交记录

为什么要删除提交历史 前几天产品提了个很扯淡的需求&#xff0c;我在代码了进行了吐槽.... 要命的是我不下心进行了代码提交&#xff1a; 我们的远程仓库大家都能看见的 这要是被其他人发现就惨了&#xff01;当务之急&#xff0c;我必须立刻马上删除这一条提交记录&#xff…

菜鸡学习netty源码(一)——ServerBootStrap启动

1.概述 对于初学者而然,写一个netty本地进行测试的Server端和Client端,我们最先接触到的类就是ServerBootstrap和Bootstrap。这两个类都有一个公共的父类就是AbstractBootstrap. 那既然 ServerBootstrap和Bootstrap都有一个公共的分类,那就证明它们两个肯定有很多公共的职…

EMP.DLL是什么东西?游戏提示EMP.DLL文件缺失怎么解决

emp.dll文件是Windows操作系统中的一种动态链接库文件&#xff0c;它被设计为可以被多个程序共享使用的模块化文件。这种设计旨在提高系统效率&#xff0c;减少内存消耗&#xff0c;并简化软件的维护和更新。DLL文件通常包含了一系列相关的函数和变量&#xff0c;这些函数和变量…

全景剖析阿里云容器网络数据链路(七):Terway DataPath V2(Terway≥1.8.0)

作者&#xff1a;余凯 前言 近几年&#xff0c;企业基础设施云原生化的趋势越来越强烈&#xff0c;从最开始的IaaS化到现在的微服务化&#xff0c;客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度&#xff0c;也一直在高速的发展和演…

qt学习篇---界面按键关联(信号和槽)

目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强&#xff0c;不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…

ASP.NET实验室预约系统的设计

摘 要 实验室预约系统的设计主要是基于B/S模型&#xff0c;在Windows系统下&#xff0c;运用ASP.NET平台和SQLServer2000数据库实现实验室预约功能。该设计主要实现了实验室的预约和管理功能。预约功能包括老师对实验室信息、实验项目和实验预约情况的查询以及对实验室的预约…

LeetCode 69—— x 的平方根

阅读目录 1. 题目2. 解题思路一3. 代码实现一4. 解题思路二5. 代码实现二 1. 题目 2. 解题思路一 二分查找法&#xff0c;对于整数 i ∈ [ 0 , x ] i \in [0,x] i∈[0,x]&#xff0c;我们判断 i 2 i^2 i2 和 x x x 的关系&#xff0c;然后找到最后一个平方小于等于 x x x …

向量语义学

书籍&#xff1a;Vector Semantics 作者&#xff1a;Andrs Kornai 出版&#xff1a;Springer Singapore 书籍下载-《向量语义学》本书通过提出一个以线性多面体术语表达的形式理论来弥合这一差距&#xff0c;该理论将字向量和概念结构进行了概括&#xff0c;将每个词典定义视…

45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害

在RPG游戏中&#xff0c;我们是不会直接修改生命值的属性&#xff0c;是因为在修改角色属性时&#xff0c;需要获取角色的属性并进行复杂的计算&#xff0c;所以&#xff0c;我们正常情况下使用元属性&#xff08;Meta Attributes&#xff09;作为计算的中间的媒。在服务器上先…

前端-React项目初始化

大家好我是苏麟 , 今天聊聊前端依赖 Ant Desgin Pro 快速初始化项目 . Ant Desgin Pro 官网 : 开始使用 - Ant Design Pro 初始化项目 找到文档->快速上手 脚手架命令 : # 使用 npm npm i ant-design/pro-cli -g创建项目命令 : pro create 项目名称 选择简单还是全量 : …

Python | Leetcode Python题解之第64题最小路径和

题目&#xff1a; 题解&#xff1a; class Solution:def minPathSum(self, grid: List[List[int]]) -> int:if not grid or not grid[0]:return 0rows, columns len(grid), len(grid[0])dp [[0] * columns for _ in range(rows)]dp[0][0] grid[0][0]for i in range(1, r…