maven+springMVC+hibernate工程搭建(四简单base层实现及demo)

延续maven+springMVC+hibernate项目搭建基本内容,只给出base层泛型实现类代码,由于对hql不熟,这里用mysql实现。

1.BaseDaoImpl.java:通过搭建三中sessionFactory实现数据表增删改查,添加List<Map>返回数据格式函数。

package com.cms.base.impl;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;

import com.cms.base.BaseDao;

public class BaseDaoImpl<T,ID extends Serializable> implements BaseDao<T,ID> {

	@Resource(name="sessionFactory")
	private SessionFactory sessionFactory;
	
	private Class<T> entityClass;
	
	@SuppressWarnings("unchecked")
	public BaseDaoImpl() {
		Type type = getClass().getGenericSuperclass();
		Type[] parameterizedType = ((ParameterizedType) type).getActualTypeArguments();
		entityClass = ((Class<T>) parameterizedType[0]);
	}
	
	@SuppressWarnings("unchecked")
	public T find(ID id) {
		return (T)this.sessionFactory.getCurrentSession().get(entityClass, id);
	}

	@SuppressWarnings("unchecked")
	public List<T> findAll() {
		String sql = "select * from "+entityClass.getSimpleName();
		return this.sessionFactory.getCurrentSession().createSQLQuery(sql).setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP).list();
	}

	public void save(T entity){
		this.sessionFactory.getCurrentSession().saveOrUpdate(entity);
	}
	public void delete(T entity) {
		this.sessionFactory.getCurrentSession().delete(entity);
	}

	public Long findCount() {
		String sql = "select count(*) num from "+entityClass.getSimpleName();
		Long num = Long.valueOf(this.sessionFactory.getCurrentSession().createSQLQuery(sql).uniqueResult().toString());
		return num;
	}
	
	@SuppressWarnings("unchecked")
	public List<T> findSqlList(String paraSql) {
		return this.sessionFactory.getCurrentSession().createSQLQuery(paraSql).setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP).list();
	}
	
	@SuppressWarnings("unchecked")
	public List<Map<String,Object>> findSqlListMap(String paraSql) {
		return this.sessionFactory.getCurrentSession().createSQLQuery(paraSql).setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP).list();
	}
	
	public void remove(ID... ids) {
		String sql = "delete from "+this.entityClass.getSimpleName()+" where id in(";
		for(ID id:ids){
			sql += id+",";
		}
		sql = sql.substring(0, sql.length()-1)+")";
		this.sessionFactory.getCurrentSession().createSQLQuery(sql).executeUpdate();
	}
}

2.BaseServiceImpl.java:简单的调用baseDao基本功能

package com.cms.base.impl;

import java.io.Serializable;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cms.base.BaseDao;
import com.cms.base.BaseService;

@Service("baseService")
@Transactional
public class BaseServiceImpl<T, ID extends Serializable> implements BaseService<T, ID>{

	@Resource
	private BaseDao<T,ID> baseDao;

	/**
     * The Entity class
     */
    private Class<T> entityClass;

    
	public Class<T> getEntityClass() {
		return entityClass;
	}

	public T find(ID id) {
		return this.baseDao.find(id);
	}

	public List<T> findAll() {
		return this.baseDao.findAll();
	}

	public List<T> findList(ID... ids) {
		// TODO Auto-generated method stub
		return null;
	}

	public void save(T entity) {
		this.baseDao.save(entity);
	}

	public void delete(ID... ids) {
		this.baseDao.remove(ids);
	}

	public void delete(T entity) {
		this.baseDao.delete(entity);
	}
	public Long findCount(){
		return this.baseDao.findCount();
	}
}

3.BaseCron.java:只是实现一些辅助功能(转json与前端通信方便),具体服务有对应service提供

package com.cms.base.impl;

import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;

@Component
public class BaseCron {

	public String outJson(Object o){
		return JSON.toJSONString(o);
	}
}

4.测试controller

package com.cms.user.controller;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cms.base.impl.BaseCron;
import com.cms.user.entity.User;
import com.cms.user.service.UserService;

@Controller
@ResponseBody
@RequestMapping("/auth")
public class UserController extends BaseCron{

	@Resource(name = "userService")
	private UserService userService;
	
	@RequestMapping("/find")
	public Object find(User u){
		String jsonStr = JSON.toJSONString(this.userService.findAll());
		try {
//			this.userService.saveA(u);
//			this.userService.delete(u);
//			String lm = this.outJson(this.userService.findUserByName(u.getUserName()));
//			System.out.println(lm);
//			String lt = this.outJson(this.userService.findUserBySex(u.getSex()));
//			System.out.println(lt);
//			System.out.println(this.userService.findCount());
//			String[]a = {"1"};
//			this.userService.delete(a);
			JSONObject r = new JSONObject();
			r.put("r", this.userService.findAll());
			return r.toJSONString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return jsonStr;
	}
}

5.controller注释掉部分对应service和dao的实现如下

package com.cms.user.service.impl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cms.base.impl.BaseServiceImpl;
import com.cms.user.dao.UserDao;
import com.cms.user.entity.User;
import com.cms.user.service.UserService;

@Service("userService")
@Transactional
public class UserServiceImpl extends BaseServiceImpl<User, String> implements UserService{

	@Resource(name="userDao")
	private UserDao userDao;
	
	public void saveA(User user)throws Exception {
		this.userDao.saveA(user);
	}
	
	public List<Map<String,Object>> findUserByName(String name) throws Exception{
		return this.userDao.findUserByName(name);
	}
	
	public List<User> findUserBySex(String sex) throws Exception{
		return this.userDao.findUserBySex(sex);
	}
}

package com.cms.user.dao.impl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import com.cms.base.impl.BaseDaoImpl;
import com.cms.user.dao.UserDao;
import com.cms.user.entity.User;

@Repository("userDao")
public class UserDaoImpl extends BaseDaoImpl<User, String> implements UserDao{
	
	@Resource(name="sessionFactory")
	private SessionFactory sessionFactory;

	public void saveA(User user){
		this.sessionFactory.getCurrentSession().saveOrUpdate(user);
	}
	
	public List<Map<String,Object>> findUserByName(String name){
		String sql="select * from user where username like '%"+name+"%'";
		return this.findSqlListMap(sql);
	}
	
	public List<User> findUserBySex(String sex){
		String sql="select * from user where sex ='"+sex+"'";
		return this.findSqlList(sql);
	}
}

6.创建如图红圈内容,进行测试,搜索下载jquery-3.1.1.min.js文件,其它文件代码后面给出


(1)index.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
	<head>
	</head>
	<body>
		<h2>Hello World!</h2>
		<a href="/cms/app/User.html">查看User信息</a>
	</body>
</html>

(2)User.html
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script src="js/jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/user.js" ></script>
		<title>Insert title here</title>
	</head>
	<body>
		<table id="userTable" border="1" cellspacing="1" cellpadding="1">
			
		</table>
	</body>
</html>

(3)user.js
$(document).ready(function(){
	$.ajax({
		type:"post",
		dataType:"json",
		url:"/cms/auth/find",
		async:true,
		data:"userName=a",
		success:function(data){
			userInfo(data.r);
		}
	});
})

function userInfo(userList){
	var rHtml="<tr><th>id</th><th>name</th><th>sex</th><th>age</th></tr>";
	for(var i=0; i<userList.length;i++){
		rHtml += "<tr>";
		rHtml += "<td>"+userList[i].id+"</td>";
		rHtml += "<td>"+userList[i].username+"</td>";
		rHtml += "<td>"+userList[i].sex+"</td>";
		rHtml += "<td>"+userList[i].age+"</td>";
		rHtml += "<tr>";
	}
	$("#userTable").html(rHtml);
}

7.测试结果

(1)浏览器输入http://localhost:8080/cms/index.jsp,看到helloword和一个连接
(2)点击连接,看到生成的信息


8.总结

从eclipse,tomcat,maven等的配置,到springmvc+hibernate整合配置,再到基本base层代码,现在已经可以简单实现一些web开发的基本功能。

在不考虑并发、效率等问题时,还需要熟悉一些前端h5,css,js技术,就能完成简单一个简单功能的类似cms的管理系统。能力刚到此,仍需努力啊。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值