java - Hibernate 中 NamedParameterJDBCtemplate rowmapper 的替代方案

标签 java spring hibernate jdbctemplate spring-jdbc

我必须在 Hibernate 中转换以下 NamedSqlParameterSource:-

    final List<MenuActionMapping>  menusList;


    MapSqlParameterSource sqlParams = new MapSqlParameterSource();


    menusList = namedParameterJdbcTemplate.query("call sp_proc()",sqlParams ,new RowMapper<MenuActionMapping>() {
                @Override
                public MenuActionMapping mapRow(ResultSet resultset, int i)
                        throws SQLException {

    MenuActionMapping menuActionMapping=new MenuActionMapping();


                    menuActionMapping.setMenuKey(resultset.getString("KMM_MENU_KEY"));

                    menuActionMapping.setDisplayName(resultset.getString("KMM_DISPLAY_NAME"));
                    menuActionMapping.setMenuActionFlag(resultset.getInt("KMM_ACTION_FLAG"));
                    menuActionMapping.setMenuActive(resultset.getInt("KMM_ACTIVE"));
                    menuActionMapping.setMenuLevel(resultset.getInt("str_len"));

String str=resultset.getString("menu_actions");

String [] actions=str.split(",");
if(resultset.getInt("KRMM_ACTIVE")==1)
{
menuActionMapping.setActive(true);
}
else
{
    menuActionMapping.setActive(false);
}

for(String strAct:actions)
{
     if(strAct.equals("ADD"))
    {
    menuActionMapping.setAddCheckBox(true);
    menuActionMapping.setAddCheckBoxDisabled("true");
    }
                            if(strAct.equals("VIEW"))
                            {
                                menuActionMapping.setViewCheckBox(true);
                                menuActionMapping.setViewCheckBoxDisabled("true");
                            }
                            if(strAct.equals("DELETE"))
                            {
                                menuActionMapping.setDeleteCheckBox(true);
                                menuActionMapping.setDeleteCheckBoxDisabled("true");
                            }

                            if(strAct.equals("EDIT"))
                            {
                                menuActionMapping.setEditCheckBox(true);
                                menuActionMapping.setEditCheckBoxDisabled("true");
                            }
                            if(strAct.equals("DOWNLOAD"))
                            {
                                menuActionMapping.setDownloadCheckBox(true);
                                menuActionMapping.setDownloadCheckBoxDisabled("true");
                            }

                        }               

                        return menuActionMapping;
                    }
            });
        System.out.println(menusList);

    return menusList;

我不知道namedJdbcTemplate 和Map Row 是如何工作的,所以我遇到了问题.. 我还在 hibernate 中编写了替代代码,但它不起作用:-

                    final List<MenuActionMapping> menusList; 

        Query query= getSession().createSQLQuery("call kyc.sp_proc()");

        menusList=query.list();
        System.out.println(menusList);
        return menusList;

我想我没有设置 MenuAction 映射对象,那么如何达到目的?

另外,我想在将其设置到对象之前操作列,我如何在 hibernate 状态下做到这一点......

困扰我的主要代码是:-

String str=resultset.getString("menu_actions");
String [] actions=str.split(",");
if(resultset.getInt("KRMM_ACTIVE")==1)
{
    menuActionMapping.setActive(true);
}
else
{
    menuActionMapping.setActive(false);
}

for(String strAct:actions)
{
    if(strAct.equals("ADD"))
   {
        menuActionMapping.setAddCheckBox(true);
        menuActionMapping.setAddCheckBoxDisabled("true");
}
    if(strAct.equals("VIEW"))
    {
            menuActionMapping.setViewCheckBox(true);
        menuActionMapping.setViewCheckBoxDisabled("true");
}
    if(strAct.equals("DELETE"))
    {
        menuActionMapping.setDeleteCheckBox(true);
            menuActionMapping.setDeleteCheckBoxDisabled("true");
    }

    if(strAct.equals("EDIT"))
    {
        menuActionMapping.setEditCheckBox(true);
        menuActionMapping.setEditCheckBoxDisabled("true");
    }
    if(strAct.equals("DOWNLOAD"))
    {
        menuActionMapping.setDownloadCheckBox(true);
        menuActionMapping.setDownloadCheckBoxDisabled("true");
    }

如何在 hibernate 中设置基于1列的多个属性...

最佳答案

namedJdbcTemplate 可帮助您减少获取、关闭连接等样板代码,而行映射器可帮助您迭代返回的结果集并将其映射到所需的 Java 类。
检查这个http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/

关于java - Hibernate 中 NamedParameterJDBCtemplate rowmapper 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446439/

相关文章:

java - 具有包访问的抽象方法的继承

java - Spring:使用声明的多个调度程序访问正确的 WebApplicationContext

java - 如何在 SpEL 中转义值?

mysql - GenerationTarget 遇到异常接受命令 : Error executing DDL: Standalone JPA app

java - 删除实体会导致 hibernate 中的 ObjectDeletedException

java - Hibernate 是否批量更新

java - 获取异常 : The Network Adapter could not establish the connection in simple jdbc program

java - 通过 java 代码配置 spring security 的自定义 403 错误页面

java - 如何在 Jquery 中使用 modelAttribute 值作为选择框

java - Hibernate 和 Postgres 大对象 - 在实体 finalize() 方法中释放 Blob 资源