角色管理页面、实体、service、dao创建顺序详细

第一步:在实体entity包里创建Role.java

package com.ischoolbar.programmer.entity.admin;

import org.springframework.stereotype.Component;

/**
 * 角色role实体
 * @author llq
 *
 */
@Component
public class Role {
	
	private Long id;
	
	private String name;
	
	private String remark;//角色备注

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}
	
	
}

@RequestMapping的用法:

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性,下面进行说明。

value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method: 指定请求的method类型, GET、POST、PUT、DELETE等;

produces: 指定返回的内容类型

还有一个注意的,@RequestMapping的默认属性为value,所以@RequestMapping(value="/example")和@RequestMapping("/example")是等价的。

第二步:在controller中创建RoleController.java

@RequestMapping("/admin/role")
@Controller
public class RoleController {
/**
	 * 角色列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public ModelAndView list(ModelAndView model){
		model.setViewName("/role/list");
		return model;
	}
}	

代码中的MdelAndView函数作用,向用户返回页面,可以指定返回页面的名称名称后面不需要加.jsp后缀,modelAndView返回的是json字符串


	/**
	 * 获取角色列表
	 * @param page
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> getList(Page page,
			@RequestParam(name="name",required=false,defaultValue="") String name
			){
		Map<String, Object> ret = new HashMap<String, Object>();
		//下面这段此时并没有写,后面才加
		/*Map<String, Object> queryMap = new HashMap<String, Object>();
		*queryMap.put("name", name);
		*queryMap.put("offset", page.getOffset());
		*queryMap.put("pageSize", page.getRows());
		*ret.put("rows", roleService.findList(queryMap));
		*ret.put("total", roleService.getTotal(queryMap));
		*/
		return ret;
	}
	

这个代码相比于上面那个ModAndView,使用的是@ResponseBody方式返回Json字符串,直接给用户展示数据

第三步:在service中定义RoleService接口,里面实现了增删改查功能


/**
 * 角色role service
 * @author llq
 *
 */
@Service
public interface RoleService {
	public int add(Role role);
	public int edit(Role role);
	public int delete(Long id);
	public List<Role> findList(Map<String, Object> queryMap);
	public int getTotal(Map<String, Object> queryMap);
	public Role find(Long id);
}

第四步:在Dao里面创建一个RoleDao,直接把service中的方法复制过来的,注意Dao里面用的类的注解是@Repository


/**
 * 角色role dao
 * @author llq
 *
 */
@Repository
public interface RoleDao {
	public int add(Role role);
	public int edit(Role role);
	public int delete(Long id);
	public List<Role> findList(Map<String, Object> queryMap);
	public int getTotal(Map<String, Object> queryMap);
	public Role find(Long id);
}

第五步:在service包里新建一个RoleServiceImpl,实现roleservice接口,用的类的注解是@Service
然后将RoleDao注解进来@Autowired,然后调用roleDao的方法
@Override是伪代码,表示重写。(当然不写@Override也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

package com.ischoolbar.programmer.service.admin.impl;
/**
 * 角色role的实现类
 */
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ischoolbar.programmer.dao.admin.RoleDao;
import com.ischoolbar.programmer.entity.admin.Role;
import com.ischoolbar.programmer.service.admin.RoleService;
@Service
public class RoleServiceImpl implements RoleService {

	@Autowired
	private RoleDao roleDao;
	
	@Override
	public int add(Role role) {
		// TODO Auto-generated method stub
		return roleDao.add(role);
	}

	@Override
	public int edit(Role role) {
		// TODO Auto-generated method stub
		return roleDao.edit(role);
	}

	@Override
	public int delete(Long id) {
		// TODO Auto-generated method stub
		return roleDao.delete(id);
	}

	@Override
	public List<Role> findList(Map<String, Object> queryMap) {
		// TODO Auto-generated method stub
		return roleDao.findList(queryMap);
	}

	@Override
	public int getTotal(Map<String, Object> queryMap) {
		// TODO Auto-generated method stub
		return roleDao.getTotal(queryMap);
	}

	@Override
	public Role find(Long id) {
		// TODO Auto-generated method stub
		return roleDao.find(id);
	}

}

第六步:接下来写Mapper文件,创建一个RoleMapper.xml,里面是一些对数据库的操作,主要是增删改查的功能。<mapper namespace 中定义的namespace作用是绑定Dao接口。当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句

parameterType:即将传入的语句参数的完全限定类名(或者别名)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.programmer.dao.admin.RoleDao">
	<!-- 角色插入操作 -->
	<insert id="add" parameterType="Role">
		insert into role(id,name,remark) values(null,#{name},#{remark})
	</insert>
	<!-- 角色信息模糊分页搜索查询 -->
	<select id="findList" parameterType="Map" resultType="role">
	//下面这行最后面一定要有空格,否则报错
		select * from role 
		<if test="name != null">
		//下面这行最后面一定要有空格,否则报错
			where name like '%${name}%' 
		</if>
		<if test="offset != null and pageSize != null">
			limit #{offset},#{pageSize}
		</if>
	</select>
	<!-- 角色信息模糊分页搜索查询总记录数 -->
	<select id="getTotal" parameterType="Map" resultType="Integer">
		select count(*) from role  
		<if test="name != null">
		//下面这行最后面一定要有空格,否则报错
			where name like '%${name}%' 
		</if>
	</select>
	<!-- 根据id获取角色 -->
	<select id="find" parameterType="Long" resultType="Role">
		select * from role where id = #{id}
	</select>
	<!-- 修改角色信息 -->
	<update id="edit" parameterType="Role">
		update role set name = #{name},remark = #{remark} where id = #{id}
	</update>
	<!-- 删除角色信息 -->
	<delete id="delete" parameterType="Long">
		delete from role where id = #{id}
	</delete>
</mapper>

第七步:然后在RoleController文件中,使用@Autowired注解RoleService

public class RoleController {
	
	@Autowired
	private RoleService roleService;
	/**
	 * 获取角色列表
	 * @param page
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> getList(Page page,
			@RequestParam(name="name",required=false,defaultValue="") String name
			){
		Map<String, Object> ret = new HashMap<String, Object>();
		Map<String, Object> queryMap = new HashMap<String, Object>();
		queryMap.put("name", name);
		queryMap.put("offset", page.getOffset());
		queryMap.put("pageSize", page.getRows());
		ret.put("rows", roleService.findList(queryMap));
		ret.put("total", roleService.getTotal(queryMap));
		return ret;
	}
	

在数据库里还要添加Role表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值