Map 属性以JSON 形式存于数据库

Stella981
• 阅读 428
import java.util.HashMap;
import java.util.Map;

import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;

import org.codehaus.jackson.annotate.JsonIgnore;

 
@MappedSuperclass
public class MenuDefinition {

    /**
     * menu's unique id.
     * <p>
     * 建议使用包格式
     * </p>
     */
    String id;

    /**
     * 菜单显示标签,一个简短的字符串.
     */
    String label;

    /**
     * 与上一级菜单的关联. 这是一个弱关联的关系。除了参考id以外还能够使用位置表达式。
     *
     */
    String parentId;

    /**
     * 同级菜单排序,二维表格没有顺序值,所以需要记录,默认值应该是0.
     */
    Integer seq = 0;

    /**
     * 描述字段,详细描述label。.
     *
     */
    String tooltip;

    /**
     * 菜单功能键,一个标准的URI表达式。.
     */
    String URI;

    /**
     * 菜单图标地址,URL表达式。.
     */
    String icon;

    /**
     * 类别,用来对菜单子类做区分。.
     */
    String type;

    /**
     * 上下文帮助id.一个字符串.
     */
    String helpContextId;

    /**
     * Available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
     */
    String available;

    /**
     * 助记符,单个字母的快捷键提示。.
     */
    String mnemonic;

    /**
     * 可扩展的字段.
     *
     */
    Map<String, Object> extra = new HashMap<String, Object>(5);

    public MenuDefinition() {

    }

    /**
     * Gets the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
     *
     * @return the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。
     */
    public String getAvailable() {
        return available;
    }

    /**
     * Sets the available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。.
     *
     * @param available
     *            the new available,一个条件表达式,用来计算菜单在当前的上下文中是否能够显示。
     */
    public void setAvailable(String available) {
        this.available = available;
    }

    /**
     * Gets the menu's unique id.
     *
     * @return the menu's unique id
     */
    @Id
    public String getId() {
        return id;
    }

    /**
     * Sets the menu's unique id.
     *
     * @param id
     *            the new menu's unique id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * Gets the 菜单显示标签,一个简短的字符串.
     *
     * @return the 菜单显示标签,一个简短的字符串
     */
    public String getLabel() {
        return label;
    }

    /**
     * Sets the 菜单显示标签,一个简短的字符串.
     *
     * @param label
     *            the new 菜单显示标签,一个简短的字符串
     */
    public void setLabel(String label) {
        this.label = label;
    }

    /**
     * Gets the 与上一级菜单的关联.
     *
     * @return the 与上一级菜单的关联
     */
    public String getParentId() {
        return parentId;
    }

    /**
     * Sets the 与上一级菜单的关联.
     *
     * @param parentId
     *            the new 与上一级菜单的关联
     */
    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    /**
     * Gets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
     *
     * @return the 同级菜单排序,二维表格没有顺序值,所以需要记录。
     */
    public int getSeq() {
        return seq;
    }

    /**
     * Sets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
     *
     * @param seq
     *            the new 同级菜单排序,二维表格没有顺序值,所以需要记录。
     */
    public void setSeq(Integer seq) {
        if (seq != null) {
            this.seq = seq;
        }
    }

    /**
     * Sets the 同级菜单排序,二维表格没有顺序值,所以需要记录。.
     *
     * @param seq
     *            the new 同级菜单排序,二维表格没有顺序值,所以需要记录。
     */
    @JsonIgnore
    public void setSeq(int seq) {
        this.seq = seq;
    }

    /**
     * Gets the 描述字段,详细描述label。.
     *
     * @return the 描述字段,详细描述label。
     */
    public String getTooltip() {
        return tooltip;
    }

    /**
     * Sets the 描述字段,详细描述label。.
     *
     * @param tooltip
     *            the new 描述字段,详细描述label。
     */
    public void setTooltip(String tooltip) {
        this.tooltip = tooltip;
    }

    /**
     * Gets the 菜单功能键,一个标准的URI表达式。.
     *
     * @return the 菜单功能键,一个标准的URI表达式。
     */
    public String getUri() {
        return URI;
    }

    /**
     * Sets the 菜单功能键,一个标准的URI表达式。.
     *
     * @param getURI
     *            the new 菜单功能键,一个标准的URI表达式。
     */
    public void setUri(String getURI) {
        this.URI = getURI;
    }

    /**
     * Gets the 菜单图标地址,URL表达式。.
     *
     * @return the 菜单图标地址,URL表达式。
     */
    public String getIcon() {
        return icon;
    }

    /**
     * Sets the 菜单图标地址,URL表达式。.
     *
     * @param icon
     *            the new 菜单图标地址,URL表达式。
     */
    public void setIcon(String icon) {
        this.icon = icon;
    }

    /**
     * Gets the 类别,用来对菜单子类做区分。.
     *
     * @return the 类别,用来对菜单子类做区分。
     */
    public String getType() {
        return type;
    }

    /**
     * Sets the 类别,用来对菜单子类做区分。.
     *
     * @param type
     *            the new 类别,用来对菜单子类做区分。
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * Gets the 上下文帮助id.
     *
     * @return the 上下文帮助id
     */
    public String getHelpContextId() {
        return helpContextId;
    }

    /**
     * Sets the 上下文帮助id.
     *
     * @param helpContextId
     *            the new 上下文帮助id
     */
    public void setHelpContextId(String helpContextId) {
        this.helpContextId = helpContextId;
    }

    /**
     * Gets the 可扩展的字段.
     *
     * @return the 可扩展的字段
     */
    @Transient
    public Map<String, Object> getExtra() {
        return extra;
    }

    /**
     * Sets the 可扩展的字段.
     *
     * @param extra
     *            the new 可扩展的字段
     */
    public void setExtra(Map<String, Object> extra) {
        this.extra = extra;
    }

    /**
     * Gets the 助记符,单个字母的快捷键提示。.
     *
     * @return the 助记符,单个字母的快捷键提示。
     */
    public String getMnemonic() {
        return mnemonic;
    }

    /**
     * Sets the 助记符,单个字母的快捷键提示。.
     *
     * @param mnemonic
     *            the new 助记符,单个字母的快捷键提示。
     */
    public void setMnemonic(String mnemonic) {
        this.mnemonic = mnemonic;
    }
}

package com.lee.mvc.core.menu.jpa;

import java.io.IOException;
import java.util.Map;

import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.lee.mvc.core.menu.MenuDefinition;

@Entity(name="menuDefinitionJpa")
@Table(name = "jmoco_ui_menu")
@AttributeOverride(name = "extra", column = @Column(name = "extra"))
public class MenuDefinitionJpa extends MenuDefinition {
    ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 返回扩展JSON字段,如果解析异常,就返回“{}”
     * 
     * @return
     */
    @Column(name = "extra")
    public String getExtraJsonString() {
        if (getExtra().size() > 0) {
            try {
                return objectMapper.writeValueAsString(getExtra());
            } catch (JsonGenerationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JsonMappingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            return "{}";
        }
        return null;
    }

    /**
     * 设置扩展的JSNO字符串。
     * 
     * @param json
     */
    public void setExtraJsonString(String json) {
        if (json == null || "".equals(json)) {

        } else {
            try {
                @SuppressWarnings("unchecked")
                Map<String, Object> readValue = objectMapper.readValue(json, Map.class);
                setExtra(readValue);
            } catch (JsonParseException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            }
        }
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这