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

漳州做网站公司网站建设要求

漳州做网站,公司网站建设要求,软件编程代码大全,网站建设实训感想“哲学家们只是用不同的方式解释世界#xff0c;而问题在于改变世界。” ——卡尔马克思 (Karl Marx) 解读#xff1a;马克思强调了实践的重要性#xff0c;主张哲学不仅要理解世界#xff0c;更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM #xff0c;并且使… “哲学家们只是用不同的方式解释世界而问题在于改变世界。” ——卡尔·马克思 (Karl Marx) 解读马克思强调了实践的重要性主张哲学不仅要理解世界更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM 并且使用 PgSQL 作为数据库实现一个自定义复合类型数组参数的自定义函数。 一、POM 依赖 !-- https://mvnrepository.com/artifact/org.postgresql/postgresql -- dependencygroupIdorg.postgresql/groupIdartifactIdpostgresql/artifactIdversion42.6.0/version /dependency!-- https://mvnrepository.com/artifact/com.alibaba/druid -- dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version /dependency!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -- dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version /dependency!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -- dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.30/versionscopeprovided/scope /dependency!-- web -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency二、配置 YML spring:datasource:# 数据源基本配置url: jdbc:postgresql://127.0.0.1:5432/dbnameusername: postgrespassword: #################driver-class-name: org.postgresql.Drivertype: com.alibaba.druid.pool.DruidDataSource 三、配置 Mybatis package com.example.pgsqldemo.config;import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Configuration;/*** version: V1.0* author: 余衫马* description: mybatis 配置* data: 2024-10-25 14:25**/ Configuration MapperScan(com.example.pgsqldemo.dao) public class MybatisConfig { } 四、实体类封装 模拟复合类型传参创建 MySettingsDTO 类 package com.example.pgsqldemo.dto;import lombok.Data;/*** version: V1.0* author: 余衫马* description: 自定设置类 DTO* data: 2024-10-25 14:42**/ Data public class MySettingsDTO {/*** 配置项*/private String item;/*** 配置值*/private String content;} 创建 TestDTO 类它有一个成员 ListMySettingsDTO mySettingsDTOList package com.example.pgsqldemo.dto;import lombok.Data;import java.util.List;/*** version: V1.0* author: 余衫马* description: 测试 DTO* data: 2024-10-25 14:37**/ Data public class TestDTO {private ListMySettingsDTO mySettingsDTOList;} 五、数据库操作 创建复合类型 CREATE TYPE type_my_setting AS (item text,content text ); 创建函数 dynamic_sql_query 输出 item 字母顺序上最大的一行记录 CREATE OR REPLACE FUNCTION dynamic_sql_query (arr type_my_setting []) RETURNS type_ptl_setting AS $$ DECLAREmax_record type_my_setting ; BEGIN-- Initialize max_record with the first element of the arraymax_record : arr[1];-- Loop through the array to find the record with the maximum item valueFOR i IN 2 .. array_length(arr, 1) LOOPIF arr[i].item max_record.item THENmax_record : arr[i];END IF;END LOOP;RETURN max_record; END; $$ LANGUAGE plpgsql; 函数测试 SELECT dynamic_sql_query (ARRAY[ROW(apple, content1)::type_my_setting ,ROW(banana, content2)::type_my_setting ,ROW(cherry, content3)::type_my_setting ]); 六、自定义handler 处理复合类型数组 package com.example.pgsqldemo.handler;import com.example.pgsqldemo.dto.MySettingsDTO; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.postgresql.util.PGobject;import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Objects;/*** version: V1.0* author: 余衫马* description: MySettings复合类型数组处理器* data: 2024-10-25 17:07**/ public class MySettingsArrayTypeHandler extends BaseTypeHandlerListMySettingsDTO {Overridepublic void setNonNullParameter(PreparedStatement ps, int i, ListMySettingsDTO parameter, JdbcType jdbcType) throws SQLException {Connection conn ps.getConnection();PGobject[] pgObjects new PGobject[parameter.size()];// 每个对象都是 type_my_setting 复合类型for (int j 0; j parameter.size(); j) {MySettingsDTO mySettingsDTO parameter.get(j);PGobject pgObject new PGobject();pgObject.setType(type_my_setting);pgObject.setValue(String.format((%s,%s), mySettingsDTO.getItem(), mySettingsDTO.getContent()));pgObjects[j] pgObject;}// pgsql 复合数组类型 type_my_setting[]Array array conn.createArrayOf(type_my_setting, pgObjects);ps.setArray(i, array);}Overridepublic ListMySettingsDTO getNullableResult(ResultSet rs, String columnName) throws SQLException {return toList(rs.getArray(columnName));}Overridepublic ListMySettingsDTO getNullableResult(ResultSet rs, int columnIndex) throws SQLException {return toList(rs.getArray(columnIndex));}Overridepublic ListMySettingsDTO getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {return toList(cs.getArray(columnIndex));}private ListMySettingsDTO toList(Array pgArray) throws SQLException {if (pgArray null) {return null;}Object[] array (Object[]) pgArray.getArray();ListMySettingsDTO list new ArrayList();for (Object obj : array) {PGobject pgObject (PGobject) obj;String[] values Objects.requireNonNull(pgObject.getValue()).replace((, ).replace(), ).split(,);MySettingsDTO mySettingsDTO new MySettingsDTO(values[0], values[1]);list.add(mySettingsDTO);}return list;} } 七、Mapper 与 XML 编写 在 DAO 层新建一个动态查询方法 dynamicSqlQuery package com.example.pgsqldemo.dao;import com.example.pgsqldemo.dto.TestDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param;import java.util.HashMap; import java.util.List;/*** version: V1.0* author: 余衫马* description: 测试 DAO* data: 2024-10-25 14:26**/ Mapper public interface TestDao {public ListHashMapString, Object dynamicSqlQuery(Param(dto) TestDTO dto);} select iddynamicSqlQuery resultTypejava.util.HashMap statementTypeCALLABLEselect * FROM dynamic_sql_query(#{dto.mySettingsDTOList,jdbcTypeARRAY,typeHandlercom.example.pgsqldemo.handler.MySettingsArrayTypeHandler}); /select 八、Postman测试 POST localhost:8080/api/dynamicSqlQuery# 请求报文 {mySettingsDTOList: [{item: AAAAA,content: BBBBB},{item: 123,content: 456},{item: ABC,content: FFFFFF}] }# 响应报文 [{item: ABC,content: FFFFFF} ] 可以看到传复合类型的数组参数可以被 SQL 函数正常执行并返回了预期结果。
http://www.pierceye.com/news/679926/

相关文章:

  • 企业网站实名认证时间怎样开通微信公众号
  • 怎么才能在百度上搜到自己的网站如何优化网站
  • 酒泉网站建设价格福清市建设局网站
  • 网站建设有几种厦门网站的建设
  • 沈阳网站外包通过法人姓名查企业
  • 建设网站的多少钱红色风格网站
  • 公司网站运营维护单位温州h5建站
  • 做网站想注册商标是哪一类网站上线具体流程
  • 如何让网站自适应屏幕北京做网站哪个公司好
  • 个人网站建设简历网站路径怎么做
  • 学做面包到什么网站企业网站都没的百度快照咋办
  • 手机网站建设视频教程安徽建站之星
  • 做网站专题页的字大小是多少购物商城排名
  • 门窗东莞网站建设技术支持海口快速建站模板
  • 公司网站制作第三方网站浮窗制作
  • 网站需要服务器吗?万州网站建设
  • 网站关键词可以修改吗做响应式网站字体需要响应么
  • 公司网站设计怎么做农家乐联盟网站
  • 普通网站报价多少扬中论坛网
  • 提供邢台做wap网站网站开发怎么进行数据库连接
  • 足球网站网站建设东莞网上销售网站建设
  • 响应式网站手机蓝翔老师做的网站
  • 公司网站建设维护合同中德生态园网站定制
  • 网站建设实训结论站长查询工具
  • 做电影网站要很大的主机空间吗苏州网站推广如何
  • 网站维护内容及费用网站详细设计
  • 国产手机做系统下载网站七牛云做wordpress图床
  • 营销型网站建设网站百度文库账号登录入口
  • 医疗网站建设资讯国内十大游戏公司排名
  • 江苏网站建设网络公司男做基视频网站