当前位置: 首页 > news >正文

[尚庭公寓]14-找房模块

地区信息

对于找房模块,地区信息共需三个接口,分别是**查询省份列表**、**根据省份ID查询城市列表**、**根据城市ID查询区县列表**,具体实现如下

package com.atguigu.lease.web.app.controller.region;@Tag(name = "地区信息")
@RestController
@RequestMapping("/app/region")
public class RegionController {@Autowiredprivate ProvinceInfoService provinceInfoService;@Autowiredprivate CityInfoService cityInfoService;@Autowiredprivate DistrictInfoService districtInfoService;@Operation(summary="查询省份信息列表")@GetMapping("province/list")public Result<List<ProvinceInfo>> listProvince(){List<ProvinceInfo> list = provinceInfoService.list();return Result.ok(list);}@Operation(summary="根据省份id查询城市信息列表")@GetMapping("city/listByProvinceId")public Result<List<CityInfo>> listCityInfoByProvinceId(@RequestParam Long id){LambdaQueryWrapper<CityInfo> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(CityInfo::getProvinceId,id);List<CityInfo> list = cityInfoService.list(queryWrapper);return Result.ok(list);}@GetMapping("district/listByCityId")@Operation(summary="根据城市id查询区县信息")public Result<List<DistrictInfo>> listDistrictInfoByCityId(@RequestParam Long id){LambdaQueryWrapper<DistrictInfo> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(DistrictInfo::getCityId,id);List<DistrictInfo> list = districtInfoService.list(queryWrapper);return Result.ok(list);}
}

支付方式

package com.atguigu.lease.web.app.controller.payment;@Tag(name = "支付方式接口")
@RestController
@RequestMapping("/app/payment")
public class PaymentTypeController {@Autowiredprivate PaymentTypeService paymentTypeService;@Operation(summary = "获取全部支付方式列表")@GetMapping("list")public Result<List<PaymentType>> list() {List<PaymentType> list = paymentTypeService.list();return Result.ok(list);}
}

房间信息

根据条件分页查询房间列表

package com.atguigu.lease.web.app.controller.room;@Tag(name = "房间信息")
@RestController
@RequestMapping("/app/room")
public class RoomController {@AutowiredRoomInfoService roomInfoService;@Operation(summary = "分页查询房间列表")@GetMapping("pageItem")public Result<IPage<RoomItemVo>> pageItem(@RequestParam long current, @RequestParam long size, RoomQueryVo queryVo) {IPage<RoomItemVo> page = new Page<>(current, size);IPage<RoomItemVo> list = roomInfoService.pageItem(page, queryVo);return Result.ok();}}
package com.atguigu.lease.web.app.service.impl;/*** @author liubo* @description 针对表【room_info(房间信息表)】的数据库操作Service实现* @createDate 2023-07-26 11:12:39*/
@Service
@Slf4j
public class RoomInfoServiceImpl extends ServiceImpl<RoomInfoMapper, RoomInfo>implements RoomInfoService {@Autowiredprivate RoomInfoMapper roomInfoMapper;@Overridepublic IPage<RoomItemVo> pageItem(IPage<RoomItemVo> page, RoomQueryVo queryVo) {return roomInfoMapper.pageRoomItemByQuery(page, queryVo);}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.RoomInfoMapper"><resultMap id="RoomItemVoMap" type="com.atguigu.lease.web.app.vo.room.RoomItemVo" autoMapping="true"><id property="id" column="room_id"/><!--映射房间所属公寓信息        --><association property="apartmentInfo" javaType="com.atguigu.lease.model.entity.ApartmentInfo" autoMapping="true"><id property="id" column="id"/></association><!--映射房间图片列表--><collection property="graphVoList" ofType="com.atguigu.lease.web.app.vo.graph.GraphVo"select="selectGraphById" column="room_id" autoMapping="true"/><!--映射房间标签列表--><collection property="labelInfoList" ofType="com.atguigu.lease.model.entity.LabelInfo"select="selectLabelById" column="room_id" autoMapping="true"/></resultMap><select id="pageRoomItemByQuery" resultMap="RoomItemVoMap">select ri.id as room_id,ri.room_number,ri.rent,ai.id,ai.name,ai.introduction,ai.district_id,ai.district_name,ai.city_id,ai.city_name,ai.province_id,ai.province_name,ai.address_detail,ai.latitude,ai.longitude,ai.phone,ai.is_releasefrom room_info rileft join apartment_info ai on ri.apartment_id = ai.id and ai.is_deleted = 0<where>ri.is_deleted = 0and ri.is_release = 1<if test="queryVo.provinceId != null">and ai.province_id = #{queryVo.provinceId}</if><if test="queryVo.cityId != null">and ai.city_id = #{queryVo.cityId}</if><if test="queryVo.districtId != null">and ai.district_id = #{queryVo.districtId}</if><if test="queryVo.minRent != null">and ri.rent &gt;= #{queryVo.minRent}</if><if test="queryVo.maxRent != null">and ri.rent &lt;= #{queryVo.maxRent}</if></where><if test="queryVo.orderType == 'desc' or queryVo.orderType == 'asc'">order by  ri.rent desc ${queryVo.orderType}</if></select><select id="selectGraphById" resultType="com.atguigu.lease.web.app.vo.graph.GraphVo">select id,name,urlfrom graph_infowhere is_deleted = 0and item_type = 2and item_id = #{id};</select><select id="selectLabelById" resultType="com.atguigu.lease.model.entity.LabelInfo">select id, type, namefrom label_infowhere is_deleted = 0and type = 2and id in (select label_id fromroom_label where room_id = #{id} and is_deleted = 1)</select></mapper>

知识点

xml文件`<`和`>`的转义

由于xml文件中的`<`和`>`是特殊符号,需要转义处理。

Mybatis-Plus分页插件注意事项

  1. 使用Mybatis-Plus的分页插件进行分页查询时,如果结果需要使用`<collection>`进行映射,只能使用**[嵌套查询(Nested Select for Collection)](https://mybatis.org/mybatis-3/sqlmap-xml.html#nested-select-for-collection)**,而不能使用**[嵌套结果映射(Nested Results for Collection)](https://mybatis.org/mybatis-3/sqlmap-xml.html#nested-results-for-collection)**。
  2. **嵌套查询**和**嵌套结果映射**是Collection映射的两种方式,下面通过一个案例进行介绍
  3. 例如有`room_info`和`graph_info`两张表,其关系为一对多,如下

  1. 现需要查询房间列表及其图片信息,期望返回的结果如下
  [{"id": 1,"number": 201,"rent": 2000,"graphList": [{"id": 1,"url": "http://","roomId": 1},{"id": 2,"url": "http://","roomId": 1}]},{"id": 2,"number": 202,"rent": 3000,"graphList": [{"id": 3,"url": "http://","roomId": 2},{"id": 4,"url": "http://","roomId": 2}]}]
  1. 为得到上述结果,可使用以下两种方式
嵌套结果映射<select id="selectRoomPage" resultMap="RoomPageMap">select ri.id room_id,ri.number,ri.rent,gi.id graph_id,gi.url,gi.room_idfrom room_info rileft join graph_info gi on ri.id=gi.room_id</select><resultMap id="RoomPageMap" type="RoomInfoVo" autoMapping="true"><id column="room_id" property="id"/><collection property="graphInfoList" ofType="GraphInfo" autoMapping="true"><id column="graph_id" property="id"/></collection></resultMap>

这种方式的执行原理如下图所示

嵌套查询<select id="selectRoomPage" resultMap="RoomPageMap">select id,number,rentfrom room_info</select><resultMap id="RoomPageMap" type="RoomInfoVo" autoMapping="true"><id column="id" property="id"/><collection property="graphInfoList" ofType="GraphInfo" select="selectGraphByRoomId" column="id"/></resultMap><select id="selectGraphByRoomId" resultType="GraphInfo">select id,url,room_idfrom graph_infowhere room_id = #{id}</select>

 这种方法使用两个独立的查询语句来获取一对多关系的数据。首先,Mybatis会执行主查询来获取`room_info`列表,然后对于每个`room_info`,Mybatis都会执行一次子查询来获取其对应的`graph_info`。

  1. 若现在使用MybatisPlus的分页插件进行分页查询,假如查询的内容是第**1**页,每页**2**条记录,则上述两种方式的查询结果分别是

  1. 显然**嵌套结果映射**的分页逻辑是存在问题的(数据条数少)

根据ID查询房间详细信息

package com.atguigu.lease.web.app.controller.room;@Tag(name = "房间信息")
@RestController
@RequestMapping("/app/room")
public class RoomController {@AutowiredRoomInfoService roomInfoService;@Operation(summary = "根据id获取房间的详细信息")@GetMapping("getDetailById")public Result<RoomDetailVo> getDetailById(@RequestParam Long id) {RoomDetailVo roomInfo = roomInfoService.getDetailById(id);return Result.ok(roomInfo);}
}
package com.atguigu.lease.web.app.service.impl;/*** @author liubo* @description 针对表【room_info(房间信息表)】的数据库操作Service实现* @createDate 2023-07-26 11:12:39*/
@Service
@Slf4j
public class RoomInfoServiceImpl extends ServiceImpl<RoomInfoMapper, RoomInfo>implements RoomInfoService {@Autowiredprivate RoomInfoMapper roomInfoMapper;@AutowiredGraphInfoMapper graphInfoMapper;@AutowiredLeaseTermMapper leaseTermMapper;@AutowiredFacilityInfoMapper facilityInfoMapper;@AutowiredLabelInfoMapper labelInfoMapper;@AutowiredPaymentTypeMapper paymentTypeMapper;@AutowiredAttrValueMapper attrValueMapper;@AutowiredFeeValueMapper feeValueMapper;@AutowiredApartmentInfoService apartmentInfoService;@Overridepublic RoomDetailVo getDetailById(Long id) {RoomInfo roomInfo = roomInfoMapper.selectById(id);if (roomInfo == null) {return null;}//2.查询图片List<GraphVo> graphVoList = graphInfoMapper.selectListByItemTypeAndId(ItemType.ROOM, id);//3.查询租期List<LeaseTerm> leaseTermList = leaseTermMapper.selectListByRoomId(id);//4.查询配套List<FacilityInfo> facilityInfoList = facilityInfoMapper.selectListByRoomId(id);//5.查询标签List<LabelInfo> labelInfoList = labelInfoMapper.selectListByRoomId(id);//6.查询支付方式List<PaymentType> paymentTypeList = paymentTypeMapper.selectListByRoomId(id);//7.查询基本属性List<AttrValueVo> attrValueVoList = attrValueMapper.selectListByRoomId(id);//8.查询杂费信息List<FeeValueVo> feeValueVoList = feeValueMapper.selectListByApartmentId(roomInfo.getApartmentId());//9.查询公寓信息ApartmentItemVo apartmentItemVo = apartmentInfoService.selectApartmentItemVoById(roomInfo.getApartmentId());RoomDetailVo roomDetailVo = new RoomDetailVo();BeanUtils.copyProperties(roomInfo, roomDetailVo);roomDetailVo.setGraphVoList(graphVoList);roomDetailVo.setLeaseTermList(leaseTermList);roomDetailVo.setFacilityInfoList(facilityInfoList);roomDetailVo.setLabelInfoList(labelInfoList);roomDetailVo.setPaymentTypeList(paymentTypeList);roomDetailVo.setAttrValueVoList(attrValueVoList);roomDetailVo.setFeeValueVoList(feeValueVoList);roomDetailVo.setApartmentItemVo(apartmentItemVo);return roomDetailVo;}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.GraphInfoMapper"><select id="selectListByItemTypeAndId" resultType="com.atguigu.lease.web.app.vo.graph.GraphVo">select id, name, urlfrom graph_infowhere item_type = #{room}and item_id = #{id}and is_deleted = 0</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.LeaseTermMapper"><select id="selectListByRoomId" resultType="com.atguigu.lease.model.entity.LeaseTerm">select *from lease_termwhere is_deleted = 0and id in (select lease_term_idfrom room_lease_termwhere room_id = #{id}and is_deleted = 0)</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.FacilityInfoMapper"><select id="selectListByRoomId" resultType="com.atguigu.lease.model.entity.FacilityInfo">select *from facility_infowhere id in (select facility_idfrom room_facilitywhere room_id = #{id}and is_deleted = 0)and is_deleted = 0</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.LabelInfoMapper"><select id="selectListByRoomId" resultType="com.atguigu.lease.model.entity.LabelInfo">select *from label_infowhere is_deleted = 0and id in (select label_idfrom room_labelwhere room_id = #{id}and is_deleted = 0)</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.PaymentTypeMapper"><select id="selectListByRoomId" resultType="com.atguigu.lease.model.entity.PaymentType">select *from payment_typewhere id in (select payment_type_idfrom room_payment_typewhere room_id = #{id}and is_deleted = 0)and is_deleted = 0</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.AttrValueMapper"><select id="selectListByRoomId" resultType="com.atguigu.lease.web.app.vo.attr.AttrValueVo">select av.id,av.name,ak.id   as attr_key_id,ak.name as attr_key_namefrom attr_value avleft join attr_key ak on av.attr_key_id = ak.id and ak.is_deleted = 0where av.id in (select attr_value_idfrom room_attr_valuewhere room_id = #{id}and is_deleted = 0)and av.is_deleted = 0</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.FeeValueMapper"><select id="selectListByApartmentId" resultType="com.atguigu.lease.web.app.vo.fee.FeeValueVo">select *from fee_value fvwhere fv.id in (select fee_value_idfrom apartment_fee_valuewhere apartment_id = #{apartmentId}and is_deleted = 0)and fv.is_deleted = 0</select>
</mapper>
package com.atguigu.lease.web.app.service.impl;/*** @author liubo* @description 针对表【apartment_info(公寓信息表)】的数据库操作Service实现* @createDate 2023-07-26 11:12:39*/
@Service
public class ApartmentInfoServiceImpl extends ServiceImpl<ApartmentInfoMapper, ApartmentInfo>implements ApartmentInfoService {@Autowiredprivate ApartmentInfoMapper apartmentInfoMapper;@Autowiredprivate LabelInfoMapper labelInfoMapper;@Autowiredprivate GraphInfoMapper graphInfoMapper;@Autowiredprivate RoomInfoMapper roomInfoMapper;@Overridepublic ApartmentItemVo selectApartmentItemVoById(Long apartmentId) {ApartmentInfo apartmentInfo = apartmentInfoMapper.selectById(apartmentId);List<LabelInfo> labelInfoList = labelInfoMapper.selectListByApartmentId(apartmentId);List<GraphVo> graphVoList = graphInfoMapper.selectListByItemTypeAndId(ItemType.APARTMENT, apartmentId);BigDecimal minRent = roomInfoMapper.selectMinRentByApartmentId(apartmentId);ApartmentItemVo apartmentItemVo = new ApartmentItemVo();BeanUtils.copyProperties(apartmentInfo, apartmentItemVo);apartmentItemVo.setLabelInfoList(labelInfoList);apartmentItemVo.setGraphVoList(graphVoList);apartmentItemVo.setMinRent(minRent);return apartmentItemVo;}
}

根据公寓ID分页查询房间列表

package com.atguigu.lease.web.app.controller.room;@Tag(name = "房间信息")
@RestController
@RequestMapping("/app/room")
public class RoomController {@AutowiredRoomInfoService roomInfoService;@Operation(summary = "根据公寓id分页查询房间列表")@GetMapping("pageItemByApartmentId")public Result<IPage<RoomItemVo>> pageItemByApartmentId(@RequestParam long current, @RequestParam long size, @RequestParam Long id) {IPage<RoomItemVo> page = new Page<>(current, size);IPage<RoomItemVo> result =roomInfoService.pageItemByApartmentId(page, id);return Result.ok(result);}
}
package com.atguigu.lease.web.app.service.impl;/*** @author liubo* @description 针对表【room_info(房间信息表)】的数据库操作Service实现* @createDate 2023-07-26 11:12:39*/
@Service
@Slf4j
public class RoomInfoServiceImpl extends ServiceImpl<RoomInfoMapper, RoomInfo>implements RoomInfoService {@Autowiredprivate RoomInfoMapper roomInfoMapper;@Overridepublic IPage<RoomItemVo> pageItemByApartmentId(IPage<RoomItemVo> page, Long id) {IPage<RoomItemVo> res = roomInfoMapper.pageItemByApartmentId(page,id);return res;}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.RoomInfoMapper"><resultMap id="RoomItemVoMap" type="com.atguigu.lease.web.app.vo.room.RoomItemVo" autoMapping="true"><id property="id" column="room_id"/><!--映射房间所属公寓信息        --><association property="apartmentInfo" javaType="com.atguigu.lease.model.entity.ApartmentInfo"autoMapping="true"><id property="id" column="id"/></association><!--映射房间图片列表--><collection property="graphVoList" ofType="com.atguigu.lease.web.app.vo.graph.GraphVo"select="selectGraphById" column="room_id" autoMapping="true"/><!--映射房间标签列表--><collection property="labelInfoList" ofType="com.atguigu.lease.model.entity.LabelInfo"select="selectLabelById" column="room_id" autoMapping="true"/></resultMap><select id="selectGraphById" resultType="com.atguigu.lease.web.app.vo.graph.GraphVo">select id,name,urlfrom graph_infowhere is_deleted = 0and item_type = 2and item_id = #{id};</select><select id="selectLabelById" resultType="com.atguigu.lease.model.entity.LabelInfo">select id, type, namefrom label_infowhere is_deleted = 0and type = 2and id in (select label_idfrom room_labelwhere room_id = #{id}and is_deleted = 1)</select><select id="selectMinRentByApartmentId" resultType="java.math.BigDecimal">select min(rent)from room_infowhere apartment_id = #{id}and is_deleted = 0and is_release = 1</select><select id="pageItemByApartmentId" resultMap="RoomItemVoMap">select ri.id as room_id,ri.room_number,ri.rent,ai.id,ai.name,ai.introduction,ai.district_id,ai.district_name,ai.city_id,ai.city_name,ai.province_id,ai.province_name,ai.address_detail,ai.latitude,ai.longitude,ai.phone,ai.is_releasefrom room_info rileft join apartment_info ai on ri.apartment_id = ai.id and ai.is_deleted = 0where ri.is_deleted = 0and ri.is_release = 1</select></mapper>

公寓信息

公寓信息只需一个接口,即**根据ID查询公寓详细信息**,具体实现如下

package com.atguigu.lease.web.app.controller.apartment;@RestController
@Tag(name = "公寓信息")
@RequestMapping("/app/apartment")
public class ApartmentController {@AutowiredApartmentInfoService apartmentInfoService;@Operation(summary = "根据id获取公寓信息")@GetMapping("getDetailById")public Result<ApartmentDetailVo> getDetailById(@RequestParam Long id) {ApartmentDetailVo vo = apartmentInfoService.selectApartmentDetailById(id);return Result.ok(vo);}
}
package com.atguigu.lease.web.app.service.impl;/*** @author liubo* @description 针对表【apartment_info(公寓信息表)】的数据库操作Service实现* @createDate 2023-07-26 11:12:39*/
@Service
public class ApartmentInfoServiceImpl extends ServiceImpl<ApartmentInfoMapper, ApartmentInfo>implements ApartmentInfoService {@Autowiredprivate ApartmentInfoMapper apartmentInfoMapper;@Autowiredprivate LabelInfoMapper labelInfoMapper;@Autowiredprivate GraphInfoMapper graphInfoMapper;@Autowiredprivate RoomInfoMapper roomInfoMapper;@Autowiredprivate FacilityInfoMapper facilityInfoMapper;@Overridepublic ApartmentDetailVo selectApartmentDetailById(Long id) {ApartmentInfo apartmentInfo = apartmentInfoMapper.selectById(id);List<GraphVo> graphVoList = graphInfoMapper.selectListByItemTypeAndId(ItemType.APARTMENT, id);List<LabelInfo> labelInfoList = labelInfoMapper.selectListByApartmentId(id);BigDecimal minRent = roomInfoMapper.selectMinRentByApartmentId(id);List<FacilityInfo> facilityInfoList = facilityInfoMapper.selectListFacilityInfoByApartmentId(id);ApartmentDetailVo apartmentDetailVo = new ApartmentDetailVo();BeanUtils.copyProperties(apartmentInfo, apartmentDetailVo);apartmentDetailVo.setGraphVoList(graphVoList);apartmentDetailVo.setLabelInfoList(labelInfoList);apartmentDetailVo.setMinRent(minRent);apartmentDetailVo.setFacilityInfoList(facilityInfoList);return apartmentDetailVo;}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.lease.web.app.mapper.FacilityInfoMapper"><select id="selectListFacilityInfoByApartmentId" resultType="com.atguigu.lease.model.entity.FacilityInfo">select *from facility_infowhere id in (select facility_idfrom apartment_facilitywhere apartment_id = #{id}and is_deleted = 0)and is_deleted = 0</select>
</mapper>
http://www.dtcms.com/a/298206.html

相关文章:

  • 手写A2C(FrozenLake环境)
  • 直播美颜SDK动态贴纸模块开发指南:从人脸关键点识别到3D贴合
  • kiro的介绍和安装
  • 7.文件操作:让程序读写文件 [特殊字符]
  • CentOS 7.9 + GCC9 离线安装 IWYU(Include What You Use)
  • Linux库——库的制作和原理(1)_回顾动静态库、制作使用库
  • 【服务器与部署 26】配置管理实战:Ansible、Puppet自动化配置管理让运维效率提升10倍
  • 电磁兼容二:共模和差模问题
  • 【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件
  • Spring Boot 整合 MyBatis 与 Druid 数据源全流程
  • 《整合Spring Cache:本地缓存、Redis与Caffeine对比实践》
  • 7.25总结
  • 详解Python标准库之内置函数
  • 20255年第四届创新杯(原钉钉杯)参考论文+标准答案发布
  • 融合与智能:AI 时代数据库的进化之路
  • Low DK(低介电常数)板材的好处:
  • Vue2上
  • 《Uniapp-Vue 3-TS 实战开发》自定义年月日时分秒picker组件
  • Linux之shell脚本篇(二)
  • 7.3.3 文件系统组件
  • 医疗影像领域中DICOM标准
  • 基于位移传感器的转子质心角度位置检测:原理分析与实现
  • 关于数据库表id自增问题
  • Springboot垃圾分类管理的设计与实现
  • 人工智能概述
  • MyBatis-Plus极速开发指南
  • HAProxy 原理及配置
  • SpringBoot——使用@Scheduled定时器
  • cacti漏洞CVE-2022-46169复现
  • Android学习专题目录