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

宣城做网站公司企业3合1网站建设价格

宣城做网站公司,企业3合1网站建设价格,天猫与京东的网站建设管理,陕西建设网一体化平台文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责ListT 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常… 文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责ListT 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常Json类型 自认为 优点:数据库存储为单纯的数据不需要额外存储类型 缺点不够通用 对于Map、Object、ListT能用但是对于ListListT不太行需要写两个Typehander不够优雅接下来简单过一下流程只有插入和查找 1.1 JsonTypeHander notice: 使用的转换JSON工具是hutool中的如果自己有别的转换可以使用别的json转换工具 hutool工具包 dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.11/version/dependencyJsonTypeHandler 这个负责非List一般存储的都是MapObject和List public class JsonTypeHandlerT extends BaseTypeHandlerT{private ClassT clazz;//在Mybatis中将类型注入进来public JsonTypeHandler(ClassT clazz) {this.clazz clazz;}//写入数据Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, JSONUtil.toJsonStr(parameter));}/*** 一般是根据列名字获取下方就不再详述“因为我也不知道还没用到* param rs 结果* param colName 列名*/SneakyThrowsOverridepublic T getNullableResult(ResultSet rs, String colName) {String data rs.getString(colName);return StrUtil.isBlank(data) ? null : JSONUtil.toBean(data, clazz);}SneakyThrowsOverridepublic T getNullableResult(ResultSet rs, int colIndex) {String data rs.getString(colIndex);return StrUtil.isBlank(data) ? null : JSONUtil.toBean(data, clazz);}SneakyThrowsOverridepublic T getNullableResult(CallableStatement cs, int i) {String data cs.getString(i);return StrUtil.isBlank(data) ? null : JSONUtil.toBean(data, clazz);}}1.2 ListJsonTypeHandler 负责List 类型 public class ListJsonTypeHandlerT extends BaseTypeHandlerListT implements InitializingBean {private ClassT clazz;public ListJsonTypeHandler(ClassT clazz) {this.clazz clazz;}Overridepublic void setNonNullParameter(PreparedStatement ps, int i, ListT parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, JSONUtil.toJsonStr(parameter));}Overridepublic ListT getNullableResult(ResultSet rs, String columnName) throws SQLException {String data rs.getString(columnName);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);}SneakyThrowsOverridepublic ListT getNullableResult(ResultSet rs, int colIndex) {String data rs.getString(colIndex);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);}SneakyThrowsOverridepublic ListT getNullableResult(CallableStatement cs, int i) {String data cs.getString(i);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);} 1.3 实体类 Data AllArgsConstructor NoArgsConstructor Builder public class Json {/*** 唯一标识*/private Integer id;/*** map*/private MapString,Object mapJson;/*** 对象* 这个对象自定义的放在下面*/private Object objJson;/*** list集合* ? extends Object这个我也不知道怎么设置 但是用这个没错*/private List? extends Object listJson; }//测试的对象 Data AllArgsConstructor NoArgsConstructor Builder public class JsonObj {/*** 唯一id*/private Integer id;/*** 测试所用*/private String str; }1.4 mapper //查找 不建议用 * 代替 我是为啦偷工减料Select( SELECT * from json )Results(value {Result(property id, column id),Result(property mapJson, column mapJson, typeHandler JsonTypeHandler.class,javaType HashMap.class),Result(property objJson, column objJson, typeHandler JsonTypeHandler.class,javaType JsonObj.class),Result(property listJson, column listJson, typeHandler ListJsonTypeHandler.class,javaType JsonObj.class)})ListJson select1(); // 增加Insert(insert into json( mapJson, objJson, listJson) values (#{mapJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler}, #{objJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler}, #{listJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler}))int insert1(Json vo);1.5 测试类 SpringBootTest public class ProductTest { //这个就是刚才放sql的mapperAutowiredJsonMapper jsonMapper;Testvoid test11() throws JsonProcessingException {JsonObj js JsonObj.builder().str(这真的是一个简单的测试对象).build();MapString,Object map new HashMap();map.put(gaga,乱杀);ListJsonObj jsonObjs new ArrayList();for (int i 0; i 10; i) {JsonObj js0 JsonObj.builder().id(i).str(这真的是一个简单的测试对象).build();jsonObjs.add(js0);}Json build Json.builder().mapJson(map).listJson(jsonObjs).objJson(js).build();jsonMapper.insert1(build);}Testvoid test12(){ListJson select jsonMapper.select1();System.out.println(select);}}2. 存储为携带类型的Json 因为在java在编译的时候是泛型擦除的所以对于List里面的类型无法确定于是便可以把数据类型存入数据库之中并且不需要再指出java类型 实体类还和上面一样只需调整mapper中对应的typeHandler即可 Select( SELECT * from json )Results(value {Result(property id, column id),Result(property mapJson, column mapJson, typeHandler JsonTypeHandler2.class),Result(property objJson, column objJson, typeHandler JsonTypeHandler2.class),Result(property listJson, column listJson, typeHandler JsonTypeHandler2.class)})ListJson select();Insert(insert into json( mapJson, objJson, listJson) values (#{mapJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler2}, #{objJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler2}, #{listJson,typeHandlercom.hb.springredis.typeHandler.JsonTypeHandler2}))int insert(Json vo);ListJsonTypehander2 public class ListJsonTypeHandlerT extends BaseTypeHandlerListT{private ClassT clazz;public ListJsonTypeHandler(ClassT clazz) {this.clazz clazz;}Overridepublic void setNonNullParameter(PreparedStatement ps, int i, ListT parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, JSONUtil.toJsonStr(parameter));}Overridepublic ListT getNullableResult(ResultSet rs, String columnName) throws SQLException {String data rs.getString(columnName);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);}SneakyThrowsOverridepublic ListT getNullableResult(ResultSet rs, int colIndex) {String data rs.getString(colIndex);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);}SneakyThrowsOverridepublic ListT getNullableResult(CallableStatement cs, int i) {String data cs.getString(i);return StrUtil.isBlank(data) ? null : JSONUtil.parseArray(data).toList(clazz);} } 测试类和上面基本类似 Testvoid test() throws JsonProcessingException {JsonObj js JsonObj.builder().str(这真的是一个简单的测试对象).build();MapString,Object map new HashMap();map.put(gaga,乱杀);ListJsonObj jsonObjs new ArrayList();for (int i 0; i 10; i) {JsonObj js0 JsonObj.builder().id(i).str(这真的是一个简单的测试对象).build();jsonObjs.add(js0);}Json build Json.builder().mapJson(map).listJson(jsonObjs).objJson(js).build();jsonMapper.insert(build);}Testvoid test1(){ListJson select jsonMapper.select();System.out.println(select);}
http://www.hkea.cn/news/14590574/

相关文章:

  • 书店网站建设策划书总结网站seo怎样做
  • 免费直播网站开发常熟经济技术开发区人才网
  • 凡科网站怎么关闭建设中免费网站入口在哪
  • 做淘宝推广怎样网站合适南宁北京网站建设
  • 做网站阜阳网站源码下载后怎么布置
  • 一浪网站建设文字图片在线制作生成
  • 宁波企业网站制作公司期刊网站源码
  • 网站搭建岗位及要求挂机宝怎么做网站
  • 网站开发私单哪里接杭州做网站比较出名的公司有哪些
  • 申请学校网站建设申请书网站权重怎么提升
  • 设计网站都有什么购物网站后台管理系统
  • wordpress 子主题入口息烽县抖音seo推广
  • 网站获取访客公路建设项目可行性研究报告编制办法哪个网站查最新版
  • c 做网站开发海外网新闻
  • 网站备案 2016做断桥铝最知名的网站
  • 道滘东莞网站建设一个中介平台网站的建设费
  • 淄博英文网站建设前端后端分别是什么意思
  • 网站开发网络课程怎样给自己网站做反链
  • 建设网站需要几部分做网站 技术
  • 中国物流企业网站建设问题wordpress 关闭畅言
  • 住房与城乡建设部建设环境工程技术中心网站查工程中标信息哪个网站
  • 建设网站的企业邮箱网站建设服务最火的推广软件
  • 响应式中文网站欣赏杭州网站案列
  • 做试卷挣钱的网站怎么和客户推广说网站建设语
  • 无锡商业网站建设群艺馆网站建设方案
  • 岗巴网站建设如何盗取网站
  • 郴州网站网站建设智慧企业管理平台
  • 网站建设课程报告论文最有效的app推广方式有哪些
  • 家里电脑可以做网站服务器吗站长工具seo排名查询
  • 富阳建设局网站电话微信广告投放推广平台