java
未读
mybatis映射postgresql数组类型字段相关查询及插入数据
本文设计并实现了一个基于PostgreSQL的错误码管理系统,核心解决Java数组类型与数据库数组字段的映射问题。系统通过自定义`ArrayTypeHandler`实现`String[]`类型与PostgreSQL `varchar[]`的双向转换,支持多种数组类型(如Integer、String等)的序列化与反序列化。在数据层,`MdErrorCodeMapper`接口定义了完整的CRUD操作,包括按错误码精确查询、利用PostgreSQL数组包含操作符`@>`实现原错误码模糊查询、分页查询及批量插入/更新功能。MyBatis映射文件通过`resultMap`配置字段映射,并在SQL动态语句中集成自定义`typeHandler`,确保数组数据在数据库操作中的正确持久化与读取。该方案有效简化了复杂类型的数据处理,为错误码的高效管理提供了稳定的技术支撑。
java
未读
Java设计模式之适配器模式
适配器模式是解决接口不兼容问题的结构型设计模式,通过"翻译官"式的接口转换使不兼容的类协同工作。该模式包含目标接口、适配者类和适配器三个核心角色,实现方式分为类适配器(基于继承)和对象适配器(基于组合)。在Spring Boot中广泛应用,如HandlerAdapter统一处理不同类型控制器、HttpMessageConverter转换HTTP请求响应等。其优势在于遵循单一职责原则和开闭原则,提高代码复用性和灵活性,特别适合集成第三方库或旧系统。但需注意避免过度使用,防止增加系统复杂度。适配器模式通过接口转换实现无缝协作,是解决兼容性问题的实用方案。
java
未读
springboot中使用工厂模式
本文基于工厂模式与Spring框架,设计了一套灵活的接口多实现动态调用机制。核心通过TestFactory类实现,利用Spring依赖注入特性,自动将所有实现TestInterface的组件(如TestImpl1、TestImpl2、TestImpl3)以@Component指定的名称为key、实例为value存入ConcurrentHashMap,实现统一管理。Controller层通过TestFactory根据请求参数key动态获取对应实现类,调用其getMsg方法完成业务逻辑处理。该设计解耦了接口与具体实现,新增实现类只需添加@Component注解即可自动集成,无需修改工厂代码,符合开闭原则。同时,ConcurrentHashMap的选用保证了线程安全,适用于高并发场景。整体架构实现了接口的动态路由与扩展,为工厂模式在Spring环境下的应用提供了典型实践。
java
未读
java流式查询模式
流式查询模式是一种针对大数据量查询的优化方案,通过逐条传输数据而非一次性加载至内存,显著降低内存占用并提升查询效率。其核心优势在于避免内存溢出风险,尤其适用于海量数据处理场景。
在技术实现层面,JDBC需配置ResultSet为TYPE_FORWARD_ONLY及CONCUR_READ_ONLY,并设置fetchSize控制单次获取记录数;MyBatis通过fetchSize属性与Cursor接口实现流式遍历;Spring Boot+MyBatis可在配置文件中设置default-fetch-size,Mapper接口返回Cursor类型;Spring Data JPA则通过@Query返回Stream对象,结合@Transactional(readOnly=true)保证事务安全。
使用时需注意及时关闭资源(如Connection、Cursor、Stream),避免absolute()等失效方法,且仅适用于查询操作。性能上,其速度受网络传输与数据库负载影响,但对大数据量场景,内存优化优势远超潜在传输开销,是高效处理大规模数据的关键手段。
java
未读
记录springboot中cucumber使用mock
本文记录了在Cucumber测试框架中结合Mockito对Mapper层进行mock的实践方法,旨在解决测试依赖问题,提升用例独立性。核心思路是保持Cucumber用例、步骤定义及Test Runner编写不变,引入mockito-core-1.10.19库,在Step类中完成mock逻辑。具体实现上,通过@Mock注解或Mockito.mock()创建Mapper的mock对象,使用Mockito.when()预设方法返回值(如支持参数匹配的Mockito.any()),关键步骤是通过ReflectionTestUtils将mock后的Mapper手动注入到Service层依赖字段中(需确保字段名一致)。该方法简化了测试环境搭建,无需依赖真实数据库,仅需在Step类中编写mock代码即可实现隔离测试。实践表明,该方案能满足Cucumber场景下对Mapper的mock需求,同时为类似依赖mock场景提供了可复用的参考思路。后续可探索更高效的注入方式,进一步优化测试流程。
java
未读
java8 Stream中方法简单示例
[智谱AI 摘要生成异常:Server returned HTTP response code: 429 for URL: https://open.bigmodel.cn/api/paas/v4/chat/completions | {"error":{"code":"1302","message":"您当前使用该API的并发数过高,请降低并发,或联系客服增加限额。"}}]
java
未读
设计模式【单例模式】
[智谱AI 摘要生成异常:Server returned HTTP response code: 429 for URL: https://open.bigmodel.cn/api/paas/v4/chat/completions | {"error":{"code":"1302","message":"您当前使用该API的并发数过高,请降低并发,或联系客服增加限额。"}}]