hibernate如何从数据库查询到map集合

如题,sql使用了union 将2个表的结果合并到一个表 而且想要查询出来的是map集合,
键值对形势的 比如 "name":"rr","age":"14";
现在发现如果想要返回map集合执行使用原生sql但是 该dao已经继承了 hibernate的父类了。
求支招,最好返回值为ListOrderMap 有方法吗。

1个回答

SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
从数据库去取出数据的类型转换问题

Session session = HibernateSessionFactory.getSession(); List<Menu> list = new ArrayList<Menu>(); if(menuId > 0){ String hql = " from Menu m left join m.role where roleId = "; list = session.createQuery( hql + menuId).list(); } session.close(); 我从数据库中取出数据,放到list的集合中,但总是报错: Type safety: The expression of type List needs unchecked conversion to conform to List<Menu> 请问如何解决

加载Hibernate实体BigDecimal属性,不等于预定的BigDecimal对象

我将Hibernate 实战源代码后端数据库从hsql改成mysql,运行testng测试,auction.test.basic.MapAndXMLRepresentation类 workWithMaps方法有如下加载过程: [code="java"]Map loadedItem =(Map) session.load("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 测试时断言失败,我将它的映射文件,类、集合、关联映射均设置lazy="false",仍然断言失败。甚至改成: [code="java"]Map loadedItem =(Map) session.get("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 也断言失败,后来改成: [code="java"]Map loadedItem =(Map) session.get("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); BigDecimal bd = (BigDecimal)loadedItem.get("initialPrice"); assert bd.intValue() == 99; [/code] 测试断言通过,将映射中的lazy="false"也通过。不明白为何 [code="java"]assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 不能通过,有谁能解释一下?

Hibernate返回对象的好处?

## Hibernate返回对象的好处? 最近在公司做了2个项目,先说老项目吧。用的是ssh,原生的。所以很多从数据库查询 的方法返回的都是对象,而且因为项目比较老,比较没啥表关联。比如一个界面查询学生,返回的就是这个学生的对象的集合。我发现很不合理,因为如果这个学生加了一个关联表,比如兴趣表,那么我岂不是得改这个controller service dao层3个接口的返回值吗。 还有一个就是用的公司框架封装的,查询返回值并不是一个对象,是一个List<Map> 这个map里面放的就是对象的属性跟值,如果想要加关联表的话只要在dao层改sql就可以了。 ## 由上面2个结论,我想知道这个hibernate返回值是对象到底有啥好处? ## 如果要加关联表岂不是要大改方法?

(请大神们看描述,标题说不好)hibernate 返回对象预处理问题

问题1: 一个查询返回的集合,返回的集合部分字段需要处理成前端可读内容。如某字段存储的是数字格式的IP'12345678'需要查询后转换为字符串'1.1.1.1'。以前的做法就是写一个转换类,迭代集合然后重新封装返回。但是总感觉这样效率极低,尤其是转换的内容较多,转换方式复杂的时候。想找到一个好办法解决这个问题。开始是想在数据库写函数,但是第一无法实现所有业务上的转换,再一个跟踪维护较为费神。后来朋友提了一个想法。如list 《bean》类型数据 在bean对应的set方法里增加处理。数据查询返回后直接是转换好的集合。感觉找到了思路。由于最近没有编译环境没办法实际证实。我对hibernate只限于使用不确定此方法是否可行,请各位大神指点 问题二: 后来想到了另一种业务场景 返回的内容是list《map《String,object》》 结构。 map中部分key value需要转换 并且 某些key value 的转换 基于其他key value进行判断而进行。 这种情况下我首先想到的是自定义一个hashMap 类。然后进行转换处理。再hibernate返回集合中返回此类型的list《myMapS《String,object》》.由于有基于其他key的判断转换。此类我最后编不下去了。想到有没有熟悉hibernate原理的。再hibernate 每存入一条list 的时候,进行一次预处理。这是我觉得最理想的方法。 期待CSDN大神们给出思路,解决这个问题。十分感谢。

mybatis如果返回map时,如果value为null,就不显示了。

利用mybatis 动态查询一条记录,而返回是一个map,比如操作数据库是通过存储过程或者是直接传一个String sql="select * from emp where e_id=1"字符串来返回一个map。 1、如果某一列的值为空。查询这条记录时就不显示这列了。 2、如果这个列是number类型,不能给默认值(比如 ‘0’)。只能为空,这样也会显示不出来 请问大神们怎么解决这个问题啊?

Hibernate4 org.hibernate.QueryException异常问题

各位大侠好,项目一直报错"org.hibernate.QueryException: could not resolve property: u_phone of: com.wanshang.po.Users",我仔细检查po类和映射文件,也没发现错误,请问各位大侠,这个问题是哪里错了?下面是各配置文件: ## Users.java ``` public class Users { private int id; private String name; private String phone; private String password; private String paypassword = "*"; private String usertype = "customer"; private float point = 0; public Users(){} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPaypassword() { return paypassword; } public void setPaypassword(String paypassword) { this.paypassword = paypassword; } public String getUsertype() { return usertype; } public void setUsertype(String usertype) { this.usertype = usertype; } public float getPoint() { return point; } public void setPoint(float point) { this.point = point; } } ``` ## Users.hbm.xml ``` <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.wanshang.po.Users" table="usersInfo"> <!-- 用户编号 --> <id name="id" column="u_id"> <generator class="identity" /> </id> <!-- 用户姓名 --> <property name="name" column="u_name" /> <!-- 用户手机 --> <property name="phone" column="u_phone" /> <!-- 用户密码 --> <property name="password" column="u_password" /> <!-- 用户支付密码 --> <property name="paypassword" column="u_paypassword" /> <!-- 用户类型 --> <property name="usertype" column="u_usertype" /> <!-- 用户积分 --> <property name="point" column="u_point" /> </class> </hibernate-mapping> ``` ## hibernate.cfg.xml ``` <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="myeclipse.connection.profile">mysql</property> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 数据库驱动 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库链接 --> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/wanshang</property> <!-- 数据库用户名 --> <property name="connection.username">root</property> <!-- 数据库密码 --> <property name="connection.password"></property> <!-- 数据库连接池最大连接数 --> <property name="connection.pool_size">2000</property> <!-- 自动建表 --> <property name="hbm2ddl.auto">update</property> <!-- 打印SQL语句 --> <property name="show_sql">true</property> <!-- 映射 --> <mapping resource="com/wanshang/po/Users.hbm.xml" /> </session-factory> </hibernate-configuration> ``` ## 报错时经常会指向这个方法,代码如下: ``` /*通过字段集合查找*/ public Users findByMap(Map<String, String> params) { // TODO Users users = new Users(); //生成Session实例 Session session = HibernateUtil.getSession(); try{ Criteria criteria = session.createCriteria(Users.class); //遍历Map Set<String> key = params.keySet(); for(Iterator it = key.iterator();it.hasNext();){ String k = (String) it.next(); //保存key criteria.add(Restrictions.eq(k, params.get(k)));//eq是等于,gt是大于,lt是小于,or是或 System.out.println(k+":"+params.get(k)); } users = (Users) criteria.list().get(0); }catch(Exception e){ e.printStackTrace(); }finally{ //关闭Session实例 HibernateUtil.closeSession(session); return users; } } ``` ## 下面是数据库截图: ![图片说明](https://img-ask.csdn.net/upload/201610/21/1477037855_873577.jpg)

如何用Ajax传递一个对象集合到jsp页面。

我想在我的web项目(struts2+hibernate)的首页的页面输出数据库的News这个表的内容,请问具体的代码是怎样的,我都快点疯了。 --- 附我自己写的代码,及供参考,可忽略 在servlet中: public void getNewsList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/xml"); // 设置响应类型为XML response.setCharacterEncoding("GBK"); //设置响应的编码方式 PrintWriter out = response.getWriter(); ConnDB conn=new ConnDB(); String sql="SELECT * FROM News"; ResultSet rs=conn.executeQuery(sql); // List<News> newsList=new ArrayList<News>(); try { News n=new News(); while(rs.next()){ n.setId(rs.getInt("id")); n.setTitle(rs.getString("title")); newsList.add(n); } } catch (SQLException e) { e.printStackTrace(); } conn.close(); // /****************通过Dom4j将获取的最新用户信息输出到XML文档中****************/ Document document = DocumentHelper.createDocument(); Element returnValue= document.addElement("returnValue"); document.setRootElement(returnValue); // 将returnValue设置为根节点 Element e_newsList=returnValue.addElement("NewsList"); //添加newUser节点 e_newsList.setData(newsList); XMLWriter output;。。。。。 output.flush(); } 在JSP页面中: javascript中: function getUserInfo(){ var loader_List=new net.AjaxRequest("NewsListServlet?action=getNewsList&nocache="+new Date().getTime(),deal_getNewsList,onerror,"GET");//实例化Ajax对象 } function deal_getNewsList(){ var objXml=this.req.responseXML; //获取返回的XML数据 var newsList = objXml.getElementsByTagName("newsList")[0].firstChild.data; //获取 document.getElementById("newsList").innerHTML=newsList; //显示 } timer=window.setInterval(getUserInfo,60000); //每隔1分钟获取一次 <span id="newsList"></span>

按照对象字段对对象进行排序

<div class="post-text" itemprop="text"> <p>How can I sort this array of objects by one of its fields, like <code>name</code> or <code>count</code> ?</p> <pre><code> Array ( [0] =&gt; stdClass Object ( [ID] =&gt; 1 [name] =&gt; Mary Jane [count] =&gt; 420 ) [1] =&gt; stdClass Object ( [ID] =&gt; 2 [name] =&gt; Johnny [count] =&gt; 234 ) [2] =&gt; stdClass Object ( [ID] =&gt; 3 [name] =&gt; Kathy [count] =&gt; 4354 ) .... </code></pre> </div> <p>转载于:https://stackoverflow.com/questions/4282413/sort-array-of-objects-by-object-fields</p>

请教:spring配置mysql/access多数据源的动态切换问题,急用,十分感谢!

请教:spring配置mysql/access多数据源在切换到access数据源时抛No Session found for current thread错误是怎么回事?请大侠详加指导,十分感谢,急用!我的配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd" default-autowire="byName" default-lazy-init="false"> <!-- 自动扫描dao和service包(自动注入) --> <context:component-scan base-package="org.framework.core.common.dao.*" /> <context:component-scan base-package="org.framework.core.common.service.*" /> <!-- 加载service,此时要排除要controller,因为controller已经spring-mvc中加载过了 --> <context:component-scan base-package="test.*,framework.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 引入属性文件 --> <context:property-placeholder location="classpath:dbconfig.properties" /> <!-- 配置数据源1 --> <bean name="mysqlDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc.url.mysql}" /> <property name="username" value="${jdbc.username.jeecg}" /> <property name="password" value="${jdbc.password.jeecg}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="0" /> <!-- 连接池最大使用连接数量 --> <property name="maxActive" value="20" /> <!-- 连接池最大空闲 --> <property name="maxIdle" value="20" /> <!-- 连接池最小空闲 --> <property name="minIdle" value="0" /> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="60000" /> <!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> --> <property name="validationQuery" value="${validationQuery.sqlserver}" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <property name="testWhileIdle" value="true" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="25200000" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="true" /> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="1800" /> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="true" /> </bean> <!-- 数据源2 : access数据源 --> <bean id="accessDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" /> <property name="url" value="jdbc:odbc:users" /> <property name="username" value="" /> <property name="password" value="" /> </bean> <!-- access sessionFactory --> <bean id="aceessSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="accessDataSource" /> <property name="hibernateProperties"> <props> <!-- access 语法和MSSQL相似 所以用的MSSQL方言,或者可以使用第三方方言 --> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.jdbc.batch_size">30</prop> <prop key="hibernate.jdbc.fetch_size">50</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <!-- 数据源集合 --> <bean id="dataSource" class="org.jeecgframework.core.extend.datasource.DynamicDataSource"> <property name="targetDataSources"> <map key-type="org.jeecgframework.core.extend.datasource.DataSourceType"> <entry key="mysqlDataSource" value-ref="mysqlDataSource" /> </map> </property> <property name="defaultTargetDataSource" ref="mysqlDataSource" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="entityInterceptor" ref="hiberAspect"/> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop> </props> </property> <!-- 注解方式配置 --> <property name="packagesToScan"> <list> <value>system.pojo.*</value> <value>demo.entity.*</value> <value>test.entity.*</value> <value>test.bussiness.db.UserInfo</value> </list> </property> </bean> <bean id="accessJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="accessDataSource"/> </property> </bean> <bean id="accessTransactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="aceessSessionFactory"></property> </bean> <tx:advice id="txAdvice" transaction-manager="accessTransactionManager"> <tx:attributes> <tx:method name="exists" read-only="true" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="merge*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="put*" propagation="REQUIRED" /> <tx:method name="use*" propagation="REQUIRED" /> <tx:method name="get*" propagation="REQUIRED" /> <tx:method name="count*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="list*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config proxy-target-class="true"> <aop:advisor advice-ref="txAdvice" pointcut="execution(* cors.bussiness.db..*.*(..))" /> </aop:config> <!-- JDBC配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> <!-- JDBC配置 --> <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource" /> </bean> <!-- 配置事物管理器,在*ServiceImpl里写@Transactional就可以启用事物管理 --> <bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>

easyUI datagrid赋值问题

因为前面是查询全部 没问题 但是现在加了时间条件查询 我只要查询数据库没有的空记录后 我再查数据库有的 或者全部的记录后台都可以查出来 但是datagrid不会显示 并且后台 还会报错 数组越界 我后台是用的List集合传的值,后台代码: public List<Gasorder2> Query(String queryTime) { String hql = ""; List<Gasorder2> list = new ArrayList<Gasorder2>(); if(queryTime.equals("")||queryTime==null){ hql="from Gasorder2"; }else{ hql="from Gasorder2 where buyGasTime like '%"+queryTime+"%'"; } try { Query query = session.createQuery(hql); list = query.list(); } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } return list; } datagrid数据: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> <%@ page import="Model.Gasorder2" %> <%@ page import="dao.select" %> <%@ page import="idao.iselect" %> <% String queryTime= request.getParameter("data").trim(); System.out.println("queryTime:"+queryTime); //List<Object[]> list = new ArrayList<Object[]>(); List<Gasorder2> list = new ArrayList<Gasorder2>(); iselect dao = new select(); list = dao.Query(queryTime); //获取客户端传递的分页参数 Integer pageSize = Integer.parseInt(request.getParameter("rows")); //默认参数rows表示每页显示记录数 Integer pageNumber = Integer.parseInt(request.getParameter("page")); //默认参数page表示当前页数 StringBuilder builder = new StringBuilder("{\"total\":"+list.size()+",\"rows\":["); //计算分页开始记录数 int start = (pageNumber-1)*pageSize; //计算分页结束记录数 int end = start+pageSize; //根据分页起始参数构建当前页的列表数据 for(int i=start;i<end && i<list.size();i++){ System.out.println("数组大小:"+list.size()); Gasorder2 gn = list.get(i); //System.out.println(gn.getBuyerAddress()+"~~~~~~"+i); String buyGasStatus = ""; if(gn.getStatus().equals(11)){ buyGasStatus = "写卡成功"; }else{ buyGasStatus = gn.getStatus().toString(); } builder.append("{\"terminalName\":\""+gn.getTerminalName() +"\",\"terminalId\":\""+gn.getTerminalId() +"\",\"buyGasVolume\":\""+gn.getBuyGasVolume() +"\",\"buyGasMoney\":\""+gn.getBuyGasMoney() +"\",\"buyGasTime\":\""+gn.getBuyGasTime() +"\",\"takePayMsg\":\""+gn.getTakePayMsg() +"\",\"buyerAddress\":\""+gn.getBuyerAddress() +"\",\"buyerName\":\""+gn.getBuyerName() +"\",\"priceName\":\""+gn.getPriceName() +"\",\"status\":\""+buyGasStatus +"\",\"userCode\":\""+gn.getUserCode() +"\",\"watchManufacturer\":\""+gn.getWatchManufacturer() +"\",\"flowId\":\""+gn.getFlowId() +"\"},"); } list.clear(); String gridJSON = builder.toString(); if(gridJSON.endsWith(",")){ gridJSON = gridJSON.substring(0,gridJSON.lastIndexOf(",")); } out.print(gridJSON.toString()+"]}"); System.out.println(gridJSON.toString()+"]}"); %>

struts2留言显示问题,头疼好几天了。

项目中用s2sh做的用户留言功能。用户登录时根据uid获取给自己的留言信息放入map中(struts2的session)并在前台遍历显示,没有问题,现在我需要将来访者新的留言顺序显示在所有留言的上面,封装好留言对象后用dao保存到数据库中,并将留言对象放入map中,返回前台显示,这是可以显示,但新增第二条留言时,会覆盖之前的一条留言。怎么解决啊,头疼死了,帮帮忙吧。<br /><strong>问题补充:</strong><br />数据库中保存正常,是在显示的时候覆盖了,再有我也觉得放入session不好,会占用过多内存但该怎么做呢?<br /><strong>问题补充:</strong><br />不光是留言显示的问题,还有比如添加好友后的显示好友列表这样类似的问题,其实我就是搞不清楚应该怎么保存此类信息并在前台顺序显示。eyeqq 能说详细些吗?谢谢!<br /><strong>问题补充:</strong><br />没有写equals和hashCode,这两个方法有什么用? <br /><br /><strong>问题补充:</strong><br />用了request 但新增留言显示在最后,需页面刷新后才能显示在留言列表的最上面 <br />现在我是这样做的: <br />第一步:  点击好友的链接显示好友的个人主页,此时留言列表可以正常显示,步骤如下: <br />     a:点击好友链接后提交personpage.action处理(主要是获取好友对象,根据好友对象得到好友的所有留言放入request) 代码: <br /> <br />personpage.action <br /> <br />public class PersonPageAction extends ActionSupport { <br /> private static final long serialVersionUID = 1L; <br /> private String personuid; <br /> private UserBusiness userBusiness; <br /> <br /> public void setUserBusiness(UserBusiness userBusiness) { <br /> this.userBusiness = userBusiness; <br /> } <br /> public String getPersonuid() { <br /> return personuid; <br /> } <br /> public void setPersonuid(String personuid) { <br /> this.personuid = personuid; <br /> } <br /> @Override <br /> public String execute() throws Exception { <br /> if(userBusiness.isGetUser(personuid)) { <br /> return SUCCESS; <br /> } <br /> return INPUT; <br /> } <br />} <br /> <br />UserBusiness的代码: <br /> <br />public boolean isGetUser(String personuid) { <br /> try { <br /> <br /> //首先获取当前user对象 <br />User personuser = getUser(Integer.valueOf(personuid)); <br /> <br />HttpServletRequest request = ServletActionContext.getRequest(); <br /> <br />request.setAttribute("personfriendusers", personfriendusers); <br />request.setAttribute("personuser", personuser); <br />request.setAttribute("personguestbooks", personuser.getGuestbooks()); <br /> return true; <br /> } catch (Exception e) { <br /> e.printStackTrace(); <br /> return false; <br /> } <br /> <br /> <br />b:好友个人主页jsp的留言显示代码: <br /> <br />//留言代码: <br />    &lt;form action="guestbook.action"&gt;    &lt;textarea name="gcontent" rows="3" cols="53"&gt; <br />    <br /> <br />    &lt;input name="personuserid" type="hidden" value="&amp;amp;lt;s:property value="&gt;"/&gt; <br />   &lt;input type="submit" value="留言"&gt; <br />   <br />    &lt;/form&gt; <br /> <br />//留言显示代码 <br /> <br />&lt;s:iterator value="#request.personguestbooks" status="stuts"&gt; <br /> <div> <br /> <br /> 姓名:&lt;s:property value="gname"&gt; <br /> 时间:&lt;s:property value="gtime"&gt; <br /> 内容:&lt;s:property value="gcontent"&gt; <br />        </div> <br /> &lt;/s:iterator&gt; <br /> <br />第二步:新添加留言:在上面个人主页上添加留言内容提交到guestbook.action(增加新留言到数据库,并且在返回到个人主页显示) <br /> <br />guestbook.action代码: <br /> <br />public class GuestbookAction extends ActionSupport { <br /> <br />@Override <br />public String execute() throws Exception { <br /> <br />if(guestbookBusiness.isGuestbookAdd(personuserid,gcontent)) { <br />HttpServletRequest request = ServletActionContext.getRequest(); <br />User personuser = (User)request.getAttribute("personuser"); <br />request.setAttribute("personguestbooks", personuser.getGuestbooks()); <br /> return SUCCESS; <br /> } <br /> return INPUT; <br /> } <br /> <br />GuestbookBusiness代码如下: <br /> <br />public class GuestbookBusinessImpl implements GuestbookBusiness { <br /> <br /> <br />public boolean isGuestbookAdd(Integer personuserid,String gcontent) { <br /> <br />try { <br />User personuser = userDao.get(personuserid); <br />User user = (User)ActionContext.getContext().getSession().get("user"); <br /> guestbook.setGcontent(gcontent); <br /> guestbook.setGtime(new Date()); <br /> guestbook.setGname(user.getUsername()); <br /> guestbook.setUser(personuser); <br /> //将留言对象加入用户留言集合 <br /> personuser.getGuestbooks().add(guestbook); <br /> guestbookDao.addGuestbook(guestbook); <br />HttpServletRequest request = ServletActionContext.getRequest(); <br /> //返回到Action <br /> equest.setAttribute("personuser", personuser); <br /> return true; <br /> } catch (Exception e) { <br /> e.printStackTrace(); <br /> } <br /> return false; <br /> } <br /> <br />此时返回的新增留言在最后,需刷新才能提前,这样写是不是有问题,该怎样做才能直接将回复的留言显示在留言列表的最上面呢?<br /><strong>问题补充:</strong><br />你的personuser.guestbooks是个Set还是个List? <br />guestbook.action中success到哪里了? <br /> <br />用的是Set      success后直接回person.jsp 页面 <br /> <br />"重定向"   我去试一下 struts2好像是在struts2好像是在struts.xml配置 <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /><br /><strong>问题补充:</strong><br />你好eyeqq  我去做了重定向 又有一个新问题: 从url看重定向成功,但重定向后person.jsp页面取不到request的值,不光留言的内容,其他request中的的值也取不到,但点击其他页面后再点击好友链接新加入的留言显示出来并且正常排序。(好友与留言用hibernate做的一对多关联映射,排序是按gid逆向排序,没有按时间排序)怎么回事呢?<br /><strong>问题补充:</strong><br />首先谢谢你,还有加分是肯定的了,10分都给你,虽然还没有解决我的问题,但已经给了我很多好的建议。我在做一下重定向action 去数据库重新取一下,分先给了。。

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

程序员必知的 89 个操作系统核心概念

操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。 在过去,它是类似 Unix 的系统上...

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试,问了B+树,这个回答让我通过了

上周我通过阿里一面,岗位是客户端开发工程师。面试过程中面试官问了B+树,回答时面试官一直点头(应该回答得还不错,过了),今天详细讲一讲B+树。

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。 Session 是什么 客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMa...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

立即提问
相关内容推荐