注意:前台我使用的是easyUI,我会单独的写一个博客主要描述easyUI,然后跟我的后台的信息是一起的,配套的
1.首先是写实体类,把你需要的字段都写上,也可以使用注解就不用再数据库中建表了,项目启动的时候表就会主动的建起来
2.其次是我创建了四个文件,一个是controller,dao,service还有serviceimpl的文件
3.在service中写下方法,增加,删除,修改,分页,查询所有
/**
* 查询所有
* @return
*/
List<Teachers> findAll();
/**
* 保存教师信息
* @param teachers
*/
void save(Teachers teachers);
/**
* 删除教师信息
* @param id
*/
void delete(Long id);
/**
* 分页,条件查询
* @param page
* @param deptId
* @param name
* @return
*/
Page<Teachers> findByPage(Page<Teachers> page, Long deptId, String name);
4.在service中写的是(interface)的文件,在serviceimpl文件中写的是service文件中每个方法的实现,最基本的方法就是在底层封装好的方法,直接调用就行了,保存和修改调用的是一个方法
/**
* 多表查询
*/
@Override
public List<Teachers> findAll() {
final String hql = "select t,d.name as deptName,m.name as majorName from Teachers t,Major m,Department d where t.deptId = d.id and t.majorId = m.id and m.deptId = d.id and t.status=:status";
Map<String, Object> map = new HashMap<>();
map.put("status", Status.正常.getValue());
return teachersDao.executeQuery(hql, map);
}
/**
* 保存教师的信息
*/
@Transactional(readOnly = false)
@Override
public void save(Teachers teachers) {
teachersDao.save(teachers);
}
/**
* 删除教师的信息,改变教师的状态(假删除)
*/
@Transactional(readOnly = false)
@Override
public void delete(Long id) {
final String hql = "update Teachers set status=:status where id = :id";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("status", Status.删除.getValue());
teachersDao.executeUpdate(hql, map);
}
/**
* 分页,条件查询
*/
@Override
public Page<Teachers> findByPage(Page<Teachers> page, Long deptId, String name) {
StringBuilder hqlBuilder = new StringBuilder();
hqlBuilder.append(
"select t,d.name as deptName,m.name as majorName from Teachers t,Major m,Department d where t.deptId = d.id and t.majorId = m.id and m.deptId = d.id and t.status=:status");
if (deptId != null) {
hqlBuilder.append(" and m.deptId=:deptId");
}
if (StringUtils.isNotBlank(name)) {
hqlBuilder.append(" and m.name like '%" + name + "%'");
}
hqlBuilder.append(" order by d.name");
Map<String, Object> map = new HashMap<>();
map.put("status", Status.正常.getValue());
if (deptId != null) {
map.put("deptId", deptId);
}
Page<Teachers> result = teachersDao.findPage(page, hqlBuilder.toString(), map);
transform(result);
return result;
}
//在impl文件中调用的方法,都是底层中封装好的方法
/**这就是底层封装好的方法
* 保存新增或修改的对象.
*
* @param entity 要保存的实体对象
*/
public void update(final T entity) {
Assert.notNull(entity, "entity Can not NULL");
getSession().update(entity);
logger.debug("Save {}: {}", entityClass.getSimpleName(), entity);
}
/**这是底层删除的方法
* 删除对象.
*
* @param entity 对象必须是session中的对象或含id属性的transient对象.
*/
public void delete(final T entity) {
Assert.notNull(entity, "entity Can not NULL");
getSession().delete(entity);
logger.debug("delete {}: {}",entityClass.getSimpleName(), entity);
}
5.在dao文件中就是继承了底层封装好了的文件主要是分页的文件
@Repository
public class TeachersDao extends BaseDao<Teachers, Long>{
}
6.最后在后台的时候就是调用impl文件中实现过得方法
/**
* 增加 查询系别,并回显
* @return 查询系别所有信息
*/
@RequestMapping("dept")
public Object find() {
return departmentService.findAll();
}
/**
* 增加 查询专业
* @return 查询专业的所有信息
*/
@RequestMapping("major")
public Object findmajor() {
return majorService.findAll();
}
/**
* 增加教师信息
* @param teachers
* @return
*/
@RequestMapping("save")
public HttpResult save(@Valid Teachers teachers, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return returnValidationError(bindingResult.getFieldError().getDefaultMessage());
}
// 验证编号是否已存在
if (teachers.getId() == null) {
if (teachersService.isHasByCode(teachers.getCode())) {
return returnSystemError("编号为[" + teachers.getCode() + "],的教师已经存在.");
}
}
teachersService.save(teachers);
return returnSuccess("保存教师[" + teachers.getName() + "]成功");
}
/**
* 按照教师的id删除教师的信息(假删除)
* @param id
* @return
*/
@RequestMapping("delete/{id}")
public HttpResult delete(@PathVariable Long id) {
teachersService.delete(id);
return returnSuccess("删除教师成功,教师id为:" + id);
}