项目大体:
编写实体类:
user.java
以及映射文件user.hbm.xml
将配置文件配置到heibernate中(既spring-hibernate.xml)
<value>com/wangcong/user/entity/User.hbm.xml</value>
写dao:
固定list方法
public List<User> list(){
return this.getHibernateTemplate().execute(new HibernateCallback<List<User>>() {
@Override
public List<User> doInHibernate(Session session) throws HibernateException {
// 写内容
Query query ;
List list = new ArrayList ();
//获取查询条件
String uname = user.getUname();
String pwd = user.getPwd();
//判断是否为空
if(StringUtils.isNotBlank(uname) && StringUtils.isNotBlank(pwd)) {
//拼接hql
query = session.createQuery("from User where uname = :uname and pwd = :pwd");
query.setParameter("uname", uname);
query.setParameter("pwd", pwd);
list = query.list();
}
return list;
}
});
}
写biz和Dao中的方法一样
package com.wangcong.user.biz;
import com.wangcong.user.entity.User;
public interface UserBiz {
public User login(User user);
}
写实现类impl
package com.wangcong.user.biz.impl;
import com.wangcong.user.biz.UserBiz;
import com.wangcong.user.dao.UserDao;
import com.wangcong.user.entity.User;
public class UserBizImpl implements UserBiz {
private UserDao userdao=new UserDao();
//提供set和get方法 因为spring要管理javabean 不提供会注入不进去
public UserDao getUserdao() {
return userdao;
}
public void setUserdao(UserDao userdao) {
this.userdao = userdao;
}
@Override
public User login(User user) {
return this.userdao.login(user);
}
}
写web
package com.wangcong.user.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.base.util.ResponseUtil;
import com.wangcong.base.web.BaseAction;
import com.wangcong.user.biz.UserBiz;
import com.wangcong.user.entity.User;
/**
* 将前台调用的处理逻辑写进去
* @author 86135
*
*/
public class UserAction extends BaseAction implements ModelDriven<User>{
private static final long serialVersionUID = -3749721621681239940L;
private UserBiz userBiz;//导入业务接口,并注入
private User user=new User();
public UserBiz getUserBiz() {
return userBiz;
}
public void setUserBiz(UserBiz userBiz) {
this.userBiz = userBiz;
}
public String list() throws Exception {
List<User> res = this.userBiz.login(user);
if(res.size()==1) {//返回值成功,代表login中的hql语句查询成功,账号密码正确
this.code=1;
this.msg="登录成功";
this.result=res;
}else {
this.code=0;
this.msg="登录失败";
this.result=res;
}
Map<String, Object> map=new HashMap<String, Object>();
ObjectMapper om = new ObjectMapper();
map.put("msg",msg);
map.put("result", result);
map.put("code", code);
ResponseUtil.write(response,om.writeValueAsString(map));
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
交给spring进行管理
新写一个spring-user放到spring-context.xml中进行管理
spring-user.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<bean class="com.wangcong.user.dao.UserDao" id="userDao" parent="baseDao"></bean>
<bean class="com.wangcong.user.biz.impl.UserBizImpl" id="userBiz" parent="baseBiz">
<property name="userDao" ref="userDao"></property>
</bean>
<bean class="com.wangcong.user.web.UserAction" id="userAction" parent="baseAction">
<property name="userBiz" ref="userBiz"></property>
</bean>
</beans>
配置到struts中去
<action name="/user_*" class="userAction" method="{1}">
<result name="success">/index.jsp</result>
</action>
进行测试:
访问
http://localhost:8080/SSH2/sy/user_list.action?uname=ls&&pwd=123
结果:
{"msg":"登录成功","result":[{"uname":"ls","pwd":"123"}],"code":1}
TreeNode(第一版本)
第二版本用一对多写(小编还在编写中)
项目大体:
写xml配置文件(TreeNode.hbm.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.wangcong.TreeNode.entity.TreeNode" table="t_vue_tree_node">
<id name="tree_node_id" type="java.lang.Integer" column="tree_node_id">
<generator class="increment" />
</id>
<property name="tree_node_name" type="java.lang.String" column="tree_node_name"></property>
<property name="tree_node_type" type="java.lang.Integer" column="tree_node_type"></property>
<property name="parent_node_id" type="java.lang.Integer" column="parent_node_id"></property>
<property name="url" type="java.lang.String" column="url"></property>
<property name="position" type="java.lang.Integer" column="position"></property>
<property name="icon" type="java.lang.String" column="icon"></property>
</class>
</hibernate-mapping>
将配置文件配置到heibernate中(既spring-hibernate.xml)
TreeNode.java
package com.wangcong.TreeNode.entity;
public class TreeNode {
private Integer tree_node_id;
private String tree_node_name;
private Integer tree_node_type;
private Integer parent_node_id;
private String url;
private Integer position;
private String icon;
public Integer getTree_node_id() {
return tree_node_id;
}
public void setTree_node_id(Integer tree_node_id) {
this.tree_node_id = tree_node_id;
}
public String getTree_node_name() {
return tree_node_name;
}
public void setTree_node_name(String tree_node_name) {
this.tree_node_name = tree_node_name;
}
public Integer getTree_node_type() {
return tree_node_type;
}
public void setTree_node_type(Integer tree_node_type) {
this.tree_node_type = tree_node_type;
}
public Integer getParent_node_id() {
return parent_node_id;
}
public void setParent_node_id(Integer parent_node_id) {
this.parent_node_id = parent_node_id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getPosition() {
return position;
}
public void setPosition(Integer position) {
this.position = position;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
@Override
public String toString() {
return "TreeNode [tree_node_id=" + tree_node_id + ", tree_node_name=" + tree_node_name + ", tree_node_type="
+ tree_node_type + ", parent_node_id=" + parent_node_id + ", url=" + url + ", position=" + position
+ ", icon=" + icon + "]";
}
}
写dao方法(TreeNodeDao.java)
package com.wangcong.TreeNode.dao;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateCallback;
import com.wangcong.TreeNode.entity.TreeNode;
import com.wangcong.base.dao.BaseDao;
public class TreeNodeDao extends BaseDao{
public List<TreeNode> list(){
return this.getHibernateTemplate().execute(new HibernateCallback<List<TreeNode>>() {
@Override
public List<TreeNode> doInHibernate(Session session) throws HibernateException {
return session.createQuery("from TreeNode").list();
}
});
}
}
写biz方法(TreeNodeBiz.java)
package com.wangcong.TreeNode.biz;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import com.wangcong.TreeNode.entity.TreeNode;
public interface TreeNodeBiz {
public List<TreeNode> list();
}
编写实现类(TreeNodeBizImpl.java)
package com.wangcong.TreeNode.biz.impl;
import java.util.List;
import com.wangcong.TreeNode.biz.TreeNodeBiz;
import com.wangcong.TreeNode.dao.TreeNodeDao;
import com.wangcong.TreeNode.entity.TreeNode;
public class TreeNodeBizImpl implements TreeNodeBiz{
private TreeNodeDao treeNodeDao=new TreeNodeDao();
public TreeNodeDao getTreeNodeDao() {
return treeNodeDao;
}
public void setTreeNodeDao(TreeNodeDao treeNodeDao) {
this.treeNodeDao = treeNodeDao;
}
@Override
public List<TreeNode> list() {
return this.treeNodeDao.list();
}
}
写action(TreeNodeAction.java)
package com.wangcong.TreeNode.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.TreeNode.biz.TreeNodeBiz;
import com.wangcong.TreeNode.entity.TreeNode;
import com.wangcong.base.util.ResponseUtil;
import com.wangcong.base.web.BaseAction;
public class TreeNodeAction extends BaseAction implements ModelDriven<TreeNode>{
private TreeNodeBiz treeNodeBiz;
private TreeNode treeNode;
public TreeNodeBiz getTreeNodeBiz() {
return treeNodeBiz;
}
public void setTreeNodeBiz(TreeNodeBiz treeNodeBiz) {
this.treeNodeBiz = treeNodeBiz;
}
public String list() throws Exception {
List<TreeNode> res = treeNodeBiz.list();
this.msg="操作成功";
this.code=1;
this.result=res;
Map<String, Object> map=new HashMap<String, Object>();
map.put("msg", msg);
map.put("result", result);
map.put("code", code);
ObjectMapper om = new ObjectMapper();
ResponseUtil.write(response, om.writeValueAsString(map));
return SUCCESS;
}
@Override
public TreeNode getModel() {
return treeNode;
}
}
交给spring进行管理
写spring-TreeNode.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<bean class="com.wangcong.TreeNode.dao.TreeNodeDao" id="treeNodeDao" parent="baseDao"></bean>
<bean class="com.wangcong.TreeNode.biz.impl.TreeNodeBizImpl" id="treeNodeBiz" parent="baseBiz">
<property name="treeNodeDao" ref="treeNodeDao"></property>
</bean>
<bean class="com.wangcong.TreeNode.web.TreeNodeAction" id="treeNodeAction" parent="baseAction">
<property name="treeNodeBiz" ref="treeNodeBiz"></property>
</bean>
</beans>
分模块开发写到spring-context.xml中
<import resource="spring-TreeNode.xml"/>
并且交由struts进行控制
<action name="/node_*" class="treeNodeAction" method="{1}">
<result name="success">/index.jsp</result>
</action>
测试结果:
测试路径:
http://localhost:8080/SSH2/sy/node_list.action
测试结果:
{"msg":"操作成功","result":[{"tree_node_id":1,"tree_node_name":"系统管理","tree_node_type":1,"parent_node_id":null,"url":null,"position":1,"icon":"el-icon-setting"},{"tree_node_id":2,"tree_node_name":"用户管理","tree_node_type":2,"parent_node_id":1,"url":"/sys/VuexPage1","position":2,"icon":"el-icon-user"},{"tree_node_id":3,"tree_node_name":"角色管理","tree_node_type":2,"parent_node_id":1,"url":"/sys/VuexPage2","position":3,"icon":""},{"tree_node_id":4,"tree_node_name":"密码修改","tree_node_type":2,"parent_node_id":1,"url":null,"position":4,"icon":null},{"tree_node_id":5,"tree_node_name":"论坛管理","tree_node_type":1,"parent_node_id":null,"url":null,"position":5,"icon":"el-icon-reading"},{"tree_node_id":6,"tree_node_name":"文章管理","tree_node_type":2,"parent_node_id":5,"url":"/sys/Articles","position":6,"icon":null}],"code":1}
Articles
提供项目大体:
先编写:Article.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class table="t_vue_articles" name="com.wangcong.articles.entity.Articles">
<id name="id" type="java.lang.Integer" column="id">
<generator class="increment"></generator>
</id>
<property name="title" type="java.lang.String" column="title"></property>
<property name="body" type="java.lang.String" column="body"></property>
</class>
</hibernate-mapping>
将配置文件配置到heibernate中(既spring-hibernate.xml)
写实体类:Articles.java
package com.wangcong.articles.entity;
public class Articles {
private Integer id;
private String title;
private String body;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
@Override
public String toString() {
return "Articles [id=" + id + ", title=" + title + ", body=" + body + "]";
}
}
再写dao(ArticlesDao,java)
package com.wangcong.articles.dao;
import java.util.List;
import org.apache.commons.lang3.concurrent.TimedSemaphore;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateCallback;
import com.wangcong.articles.entity.Articles;
import com.wangcong.base.dao.BaseDao;
import com.wangcong.base.util.PageBean;
public class ArticlesDao extends BaseDao{
/**
* 查询
* @throws IllegalAccessException
* @throws InstantiationException
*/
public List<Articles> list(Articles articles,PageBean pageBean) throws InstantiationException, IllegalAccessException{
BaseDao obj=super.getClass().newInstance();
return this.getHibernateTemplate().execute(new HibernateCallback<List<Articles>>() {
@Override
public List<Articles> doInHibernate(Session session) throws HibernateException {
String hql="from Articles";
return obj.executeQuery(session, hql, null, pageBean);
}
});
}
/**
* 增加
*
*/
public void add(Articles articles) {
this.getHibernateTemplate().save(articles);
}
/**
* 删除
*
*/
public void del(Articles articles) {
this.getHibernateTemplate().delete(articles);
}
/**
* 修改
*
*/
public void edit(Articles articles) {
this.getHibernateTemplate().update(articles);
}
}
写biz(ArticlesBiz.java)
package com.wangcong.articles.biz;
import java.util.List;
import com.wangcong.articles.entity.Articles;
import com.wangcong.base.util.PageBean;
public interface ArticlesBiz {
public void add(Articles articles);
public void del(Articles articles);
public void edit(Articles articles);
public List<Articles> list(Articles articles,PageBean pageBean) throws InstantiationException, IllegalAccessException;
}
写实现类:(ArticlesBizImpl.java)
package com.wangcong.articles.biz.Impl;
import java.util.List;
import com.wangcong.articles.biz.ArticlesBiz;
import com.wangcong.articles.dao.ArticlesDao;
import com.wangcong.articles.entity.Articles;
import com.wangcong.base.util.PageBean;
public class ArticlesBizImpl implements ArticlesBiz{
private ArticlesDao articlesDao;
public ArticlesDao getArticlesDao() {
return articlesDao;
}
public void setArticlesDao(ArticlesDao articlesDao) {
this.articlesDao = articlesDao;
}
@Override
public void add(Articles articles) {
this.articlesDao.add(articles);
}
@Override
public void del(Articles articles) {
// TODO Auto-generated method stub
this.articlesDao.del(articles);
}
@Override
public void edit(Articles articles) {
// TODO Auto-generated method stub
this.articlesDao.edit(articles);
}
@Override
public List<Articles> list(Articles articles, PageBean pageBean)throws InstantiationException, IllegalAccessException {
return this.articlesDao.list(articles, pageBean);
}
}
再写web层:ArticleAction.java
package com.wangcong.articles.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.articles.biz.ArticlesBiz;
import com.wangcong.articles.entity.Articles;
import com.wangcong.base.util.PageBean;
import com.wangcong.base.util.ResponseUtil;
import com.wangcong.base.web.BaseAction;
public class ArticleAction extends BaseAction implements ModelDriven<Articles>{
private ArticlesBiz articlesBiz;
private Articles articles=new Articles();
public ArticlesBiz getArticlesBiz() {
return articlesBiz;
}
public void setArticlesBiz(ArticlesBiz articlesBiz) {
this.articlesBiz = articlesBiz;
}
/**
* 查询
* @throws Exception
* @throws JsonProcessingException
*/
public String list() throws Exception {
PageBean pageBean=new PageBean();
pageBean.setRequest(request);
List<Articles> res = this.articlesBiz.list(articles, pageBean);
this.msg="操作成功";
this.result=res;
this.code=1;
Map<String, Object> map=new HashMap<String, Object>();
map.put("msg", msg);
map.put("result", result);
map.put("code", code);
ObjectMapper om = new ObjectMapper();
ResponseUtil.write(response, om.writeValueAsString(map));
/*JsonData jsonData = new JsonData(1, "操作成功", list);
jsonData.put("pageBean", pageBean);
System.out.println(pageBean.getTotal());
ResponseUtil.write(response, om.writeValueAsString(jsonData));*/
return SUCCESS;
}
/**
* 增加
*/
public String add() {
this.articlesBiz.add(articles);
return SUCCESS;
}
/**
* 删除
*/
public String del() {
this.articlesBiz.del(articles);
return SUCCESS;
}
/**
* 修改
* @return
*/
public String edit() {
this.articlesBiz.edit(articles);
return SUCCESS;
}
@Override
public Articles getModel(){
return articles;
}
}
交给Spring进行管理:
编写spring-articles.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<bean class="com.wangcong.articles.dao.ArticlesDao" id="articlesDao" parent="baseDao"></bean>
<bean class="com.wangcong.articles.biz.Impl.ArticlesBizImpl" id="articlesBiz" parent="baseBiz">
<property name="articlesDao" ref="articlesDao"></property>
</bean>
<bean class="com.wangcong.articles.web.ArticleAction" id="articleAction" parent="baseAction">
<property name="articlesBiz" ref="articlesBiz"></property>
</bean>
</beans>
进行管理:
<!-- 分模块开发中的user模块 -->
<import resource="spring-articles.xml"/>
交给struts控制:
<action name="/articles_*" class="articleAction" method="{1}">
<result name="success">/index.jsp</result>
</action>
测试:
http://localhost:8080/SSH2/sy/articles_list.action
结果:
{"msg":"操作成功","result":[{"id":1,"title":"MySQL Tutorial","body":"DBMS stands for DataBase ..."},{"id":2,"title":"How To Use MySQL Efficiently","body":"After you went through a ..."},{"id":3,"title":"Optimising MySQL","body":"In this tutorial we will show ..."},{"id":4,"title":"","body":"1. Never run mysqld as root. 2. ..."},{"id":5,"title":"MySQL vs. YourSQL","body":"In the following database comparison ..."},{"id":6,"title":"MySQL Security","body":"When configured properly, MySQL ..."},{"id":8,"title":"阿里与拼多多的增量之战","body":"近日,多家媒体报道阿里内部正考虑将聚划算彻底从淘宝天猫独立出来,成立大聚划算事业群。据传独立后的聚划算将肩负起阿里进攻下沉市场、迎战拼多多的重任"},{"id":9,"title":"lucene工具类","body":"package com.javaxl.p1.utils;\n\nimport java.io.IOException;\nimport java.nio.file.Paths;\n\nimport org.apache.lucene.analysis.Analyzer;\nimport org.apache.lucene"},{"id":10,"title":"lucene案例","body":"对某一表进行索引操作的帮助类package com.javaxl.p1.component;\n\nimport com.javaxl.p1.entity.Blog;\nimport com.javaxl.p1.service.BlogService;\nimport com.javaxl.p1.utils.Date"},{"id":15,"title":"solr简介","body":"solr简单了解下,相较于lucene好处在哪里"}],"code":1}
测试:
http://localhost:8080/SSH2/sy/articles_add.action?title=%E5%93%87%E5%93%88%E5%93%88&&body=%E5%93%87%E5%93%88%E5%93%88%E5%BE%88%E5%A5%BD%E5%96%9D
结果:
测试:
http://localhost:8080/SSH2/sy/articles_del.action?id=169
结果:不存在169的数据
测试:
http://localhost:8080/SSH2/sy/articles_edit.action?id=168&&title=修改&&body=修改
结果:
报错:
User问题
问题描述:userAction找不到。
解决方法:
TreeNode问题
问题在于spring-hibernate没有填写xml文件
上述都没有填写