springMVC+spring+Hibernate,搭建外卖平台(二)

新建pageInfo类,这个类是用来实现分页功能的。

在这里插入图片描述源码:

package com.bdqn.it.entity;

import java.util.List;
//代表分页的类
public class PageInfo<T> {
	private List<T> list;//列表
	private int currPage;//当前第几页
	private int row;//每页行数
	private int rowCount;//总行数
	private String orderBy;//排序
	
	public String getMsg(){return "";}
	public int getCount(){return this.rowCount;}
	public List<T> getData(){return this.list;}
	public int getCode(){return 0;}
	
	public PageInfo() {
		super();
	}
	public PageInfo(int currPage, int row, String orderBy) {
		super();
		this.currPage = currPage;
		this.row = row;
		this.orderBy = orderBy;
	}
	public PageInfo(List<T> list, int currPage, int row, int rowCount, String orderBy) {
		super();
		this.list = list;
		this.currPage = currPage;
		this.row = row;
		this.rowCount = rowCount;
		this.orderBy = orderBy;
	}
	
	public int getStart(){
		return (this.currPage-1)*row;
	}
	
	public int getPageCount()
	{
		return (int)Math.ceil(this.rowCount/(float)row);
	}
	public int getNext(){//下一页
		if(this.currPage>=this.getPageCount())
			return this.getPageCount();
		return this.currPage+1;
	}
	public int getPrev(){//上一页
		if(this.currPage<=1)
			return 1;
		return this.currPage-1;
	}
	public int getFirst(){return 1;}
	public int getLast(){return this.getPageCount();}
	public List<T> getList() {
		return list;
	}
	public void setList(List<T> list) {
		this.list = list;
	}
	public int getCurrPage() {
		return currPage;
	}
	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}
	public int getRow() {
		return row;
	}
	public void setRow(int row) {
		this.row = row;
	}
	public int getRowCount() {
		return rowCount;
	}
	public void setRowCount(int rowCount) {
		this.rowCount = rowCount;
	}
	public String getOrderBy() {
		return orderBy;
	}
	public void setOrderBy(String orderBy) {
		this.orderBy = orderBy;
	}
	
	
}




新建BaseService接口,这个接口是所有业务类的父接口,继承它即可拥有基本需要用到的方法。

在这里插入图片描述源码:

package com.bdqn.it.service;

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

import org.hibernate.criterion.DetachedCriteria;

import com.bdqn.it.entity.PageInfo;

public interface BaseService<T> {
	
	// 新增
	public void add(T o);
	// 修改
	public void edit(T o);
	// 删除
	public void remove(T o);
	
	// Serializable是包装类的父接口,根据id查询单个对象
	public T findById(Serializable id);
	// 根据id延迟加载查询
	public T loadById(Serializable id);	
	// 根据条件查询单个对象
	public T findOne(DetachedCriteria dc);
	// 查询所有
	public List<T> findAll();
	// 查询所有
	public List<T> findList(DetachedCriteria dc);
	
	public PageInfo<T> findPage(DetachedCriteria dc, int pageIndex, int row
			, String orderby);
}

创建两个接口类各继承BaseService父接口

在这里插入图片描述在这里插入图片描述

新建BaseServiceImpl父实现类,同时实现父接口。注意:这个也是泛型的。

在这里插入图片描述源码:

package com.bdqn.it.service.impl;

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

import org.hibernate.Criteria;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;

import com.bdqn.it.dao.BaseDao;
import com.bdqn.it.entity.PageInfo;
import com.bdqn.it.service.BaseService;

public class BaseServiceImpl<T> implements BaseService<T> {

	private BaseDao<T> dao;

	@Override
	public void add(T o) {
		dao.insert(o);
	}

	@Override
	public void edit(T o) {
		dao.update(o);
	}

	@Override
	public void remove(T o) {
		dao.delete(o);
	}

	@Override
	public T findById(Serializable id) {
		return dao.selectById(id);
	}

	@Override
	public T loadById(Serializable id) {
		return dao.loadById(id);
	}

	@Override
	public T findOne(DetachedCriteria dc) {
		return dao.selectOne(dc);
	}

	@Override
	public List<T> findAll() {
		return dao.selectAll();
	}

	@Override
	public List<T> findList(DetachedCriteria dc) {
		return dao.selectList(dc);
	}

	@Override
	public PageInfo<T> findPage(DetachedCriteria dc, int page, int row, String orderby) {
		
		// 略
	}

}

创建另外一个实体类,这个实体类是 区域 实体类,也就是负责存储地区区域的。

在这里插入图片描述源码:

package com.bdqn.it.entity;

public class Area {
	private int id;
	private String name;
	private String code;
	private String remark;
	private Area parent;
	// get、set方法省略
}

然后把这个实体类相对应的dao接口、dao实现类、service接口和service实现类创建
在这里插入图片描述

dao实现类
在这里插入图片描述在这里插入图片描述在这里插入图片描述

然后我们回头检查一下持久化层和业务层各三个类的注解有没有写。持久化层起名字的规律是小写类名+dao,比喻address+dao=addressdao。

在这里插入图片描述

业务层起名字的规律也是类似小写类名+service。

在这里插入图片描述

然后就要写实体类数据库字段映射了

Area类
在这里插入图片描述Area类映射源码:

<?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.bdqn.it.entity.Member" table="fs_members">
		<id name="id" column="m_id">
			<generator class="identity"></generator>
		</id>
		<property name="name" column="m_name" />
		<property name="loginName" column="m_loginname" />
		<property name="loginPwd" column="m_loginpwd" />
		<property name="mobile" column="m_mobile" />
		<property name="email" column="m_email" />
		<property name="regTime" column="m_regtime" type="date"/>
		<property name="vipType" column="m_viptype" />
		<property name="balance" column="m_balance" />
		
		
		<many-to-one name="address" column="m_address_id"
			class="com.bdqn.it.entity.Address" />
			
	</class>
</hibernate-mapping>

Address类
在这里插入图片描述Address类映射源码:

<?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.bdqn.it.entity.Address" table="fs_address">
		<id name="id" column="a_id">
			<generator class="identity"></generator>
		</id>
		<property name="reviceName" column="a_revicename" />
		<property name="reviceAddress" column="a_reviceaddress" />
		<property name="revicePhone" column="a_revicephone" />

		<many-to-one name="area" column="a_area_id" 
			class="com.bdqn.it.entity.Area" />

		<many-to-one name="member" column="a_mem_id"
			class="com.bdqn.it.entity.Member" />

	</class>
</hibernate-mapping>
发布了26 篇原创文章 · 获赞 3 · 访问量 1439

猜你喜欢

转载自blog.csdn.net/CQWNB/article/details/103257610
今日推荐