ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-dao与service层等组件整合

来源:互联网 发布:rgb转化到hsv的算法 编辑:程序博客网 时间:2024/06/15 09:04

ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-dao与service层等组件整合

    这一篇博客,我把mybatis逆向工程生成的dao与service层分享出来,另外,我在第一篇博客时贴出的web.xml中配置了一个InitComponent,即初始化组件:

<!-- 监听器:初始化组件 把博主信息、根据博客类别分类信息、根据日期归档分类信息 存放到application中,用以提供页面请求性能 --><listener><listener-class>com.steadyjack.service.impl.InitComponent</listener-class></listener>
    这个组件的作用在于启动时获取系统首页所需要的各个model的信息,加快首页index.html的访问速度。下面先贴出这个组件的源码吧:

    在package com.steadyjack.service.impl 下建立 InitComponent.java类:

package com.steadyjack.service.impl;import java.util.List;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;import com.steadyjack.entity.Blog;import com.steadyjack.entity.BlogType;import com.steadyjack.entity.Blogger;import com.steadyjack.entity.Link;import com.steadyjack.service.BlogService;import com.steadyjack.service.BlogTypeService;import com.steadyjack.service.BloggerService;import com.steadyjack.service.LinkService;/** * title:InitComponent.java * description:初始化组件 把博主信息 根据博客类别分类信息 根据日期归档分类信息  *                    存放到application中,用以提供页面请求性能 * time:2017年1月16日 下午10:36:50 * author:debug-steadyjack */@Componentpublic class InitComponent implements ServletContextListener,ApplicationContextAware{//其实这个就是spring的IOC容器-spring上下文应用程序private static ApplicationContext applicationContext;@SuppressWarnings("static-access")public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext=applicationContext;}public void contextInitialized(ServletContextEvent servletContextEvent) {//application:整个应用的上下文应用程序,可以往此对象中绑定一些经常需要访问的对象ServletContext application=servletContextEvent.getServletContext();//Spring IOC容器中获取各个beanBloggerService bloggerService=(BloggerService) applicationContext.getBean("bloggerService");Blogger blogger=bloggerService.find(); // 查询博主信息blogger.setPassword(null);application.setAttribute("blogger", blogger);BlogTypeService blogTypeService=(BlogTypeService) applicationContext.getBean("blogTypeService");List<BlogType> blogTypeCountList=blogTypeService.countList(); // 查询博客类别以及博客的数量application.setAttribute("blogTypeCountList", blogTypeCountList);BlogService blogService=(BlogService) applicationContext.getBean("blogService");List<Blog> blogCountList=blogService.countList(); // 根据日期分组查询博客application.setAttribute("blogCountList", blogCountList);LinkService linkService=(LinkService) applicationContext.getBean("linkService");List<Link> linkList=linkService.list(null); // 查询所有的友情链接信息application.setAttribute("linkList", linkList);String ctx=application.getRealPath("/");System.out.println("根路径: "+ctx);application.setAttribute("ctx", ctx);}public void contextDestroyed(ServletContextEvent sce) {}}

     然后,会发现这个初始化组件InitComponent.java用到了ioc容器的各个service组件,故而,下面建立service层各个组件:

     在package com.steadyjack.service下建立BloggerService.java,BlogService.java,BlogTypeService.java,CommentService.java,LinkService.java各个interface(接口类),源码如下:

     BloggerService.java接口类:

package com.steadyjack.service;import com.steadyjack.entity.Blogger;/** * title:BloggerService.java * description:博主Service接口 * time:2017年1月16日 下午10:00:20 * author:debug-steadyjack */public interface BloggerService {/** * 查询博主信息 * @return */public Blogger find();/** * 通过用户名查询用户 * @param userName * @return */public Blogger getByUserName(String userName);/** * 更新博主信息 * @param blogger * @return */public Integer update(Blogger blogger);}
    BlogService.jave接口类:

package com.steadyjack.service;import java.util.List;import java.util.Map;import com.steadyjack.entity.Blog;/** * title:BlogService.java * description:博客Service接口 * time:2017年1月16日 下午10:35:32 * author:debug-steadyjack */public interface BlogService {/** * 根据日期月份分组查询 * @return */public List<Blog> countList(); /** * 分页查询博客 * @return */public List<Blog> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 通过Id查找实体 * @param id * @return */public Blog findById(Integer id);/** * 更新博客信息 * @param blog * @return */public Integer update(Blog blog); /** * 获取上一个博客 * @param id * @return */public Blog getLastBlog(Integer id);/** * 获取下一个博客 * @param id * @return */public Blog getNextBlog(Integer id);/** * 添加博客信息 * @param blog * @return */public Integer add(Blog blog);/** * 删除博客信息 * @param id * @return */public Integer delete(Integer id);/** * 查询指定的博客类别下的博客数量 * @param typeId * @return */public Integer getBlogByTypeId(Integer typeId);}

    BlogTypeService.java接口类:

package com.steadyjack.service;import java.util.List;import java.util.Map;import com.steadyjack.entity.BlogType;/** * title:BlogTypeService.java * description:博客类型Service接口 * time:2017年1月16日 下午10:03:06 * author:debug-steadyjack */public interface BlogTypeService {/** * 查询所有博客类型 以及对应的博客数量 * @return */public List<BlogType> countList();/** * 分页查询博客类别信息 * @param map * @return */public List<BlogType> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 添加博客类别信息 * @param blogType * @return */public Integer add(BlogType blogType);/** * 修改博客类别信息 * @param blogType * @return */public Integer update(BlogType blogType);/** * 删除博客类别信息 * @param id * @return */public Integer delete(Integer id);}

    CommentService.java接口类:

package com.steadyjack.service;import java.util.List;import java.util.Map;import com.steadyjack.entity.Comment;/** * title:CommentService.java * description:评论Service接口 * time:2017年1月16日 下午10:35:42 * author:debug-steadyjack */public interface CommentService {/** * 添加评论 * @param comment * @return */public int add(Comment comment);/** * 修改评论 * @param comment * @return */public int update(Comment comment);/** * 查找用户评论信息 * @param map * @return */public List<Comment> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 删除评论信息 * @param id * @return */public Integer delete(Integer id);}

     LinkService.java接口类:

package com.steadyjack.service;import java.util.List;import java.util.Map;import com.steadyjack.entity.Link;/** * title:LinkService.java * description:友情链接Service接口 * time:2017年1月16日 下午10:35:55 * author:debug-steadyjack */public interface LinkService {/** * 添加友情链接 * @param link * @return */public int add(Link link);/** * 修改友情链接 * @param link * @return */public int update(Link link);/** * 查找友情链接信息 * @param map * @return */public List<Link> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 删除友情链接 * @param id * @return */public Integer delete(Integer id);}

     各个service的实现类建立在package com.steadyjack.service.impl目录下,各个实现类源码如下:

     BloggerServiceImpl.java实现类:

package com.steadyjack.service.impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.steadyjack.dao.BloggerDao;import com.steadyjack.entity.Blogger;import com.steadyjack.service.BloggerService;/** * title:BloggerServiceImpl.java * description:博主Service实现类 * time:2017年1月16日 下午10:36:10 * author:debug-steadyjack */@Service("bloggerService")public class BloggerServiceImpl implements BloggerService{@Resourceprivate BloggerDao bloggerDao;public Blogger find() {return bloggerDao.find();}public Blogger getByUserName(String userName) {return bloggerDao.getByUserName(userName);}public Integer update(Blogger blogger) {return bloggerDao.update(blogger);}}

    BlogServiceImpl.java实现类如下:

package com.steadyjack.service.impl;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.steadyjack.dao.BlogDao;import com.steadyjack.entity.Blog;import com.steadyjack.service.BlogService;/** * title:BlogServiceImpl.java * description:博客Service实现类 * time:2017年1月16日 下午10:36:23 * author:debug-steadyjack */@Service("blogService")public class BlogServiceImpl implements BlogService{@Resourceprivate BlogDao blogDao;public List<Blog> countList() {return blogDao.countList();}public List<Blog> list(Map<String, Object> map) {return blogDao.list(map);}public Long getTotal(Map<String, Object> map) {return blogDao.getTotal(map);}public Blog findById(Integer id) {return blogDao.findById(id);}public Integer update(Blog blog) {return blogDao.update(blog);}public Blog getLastBlog(Integer id) {return blogDao.getLastBlog(id);}public Blog getNextBlog(Integer id) {return blogDao.getNextBlog(id);}public Integer add(Blog blog) {return blogDao.add(blog);}public Integer delete(Integer id) {return blogDao.delete(id);}public Integer getBlogByTypeId(Integer typeId) {return blogDao.getBlogByTypeId(typeId);}}

     BlogTypeServiceImpl.java实现类:

package com.steadyjack.service.impl;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.steadyjack.dao.BlogTypeDao;import com.steadyjack.entity.BlogType;import com.steadyjack.service.BlogTypeService;/** * title:BlogTypeServiceImpl.java * description:博客类型Service实现类 * time:2017年1月16日 下午10:36:32 * author:debug-steadyjack */@Service("blogTypeService")public class BlogTypeServiceImpl implements BlogTypeService{@Resourceprivate BlogTypeDao blogTypeDao;public List<BlogType> countList() {return blogTypeDao.countList();}public List<BlogType> list(Map<String, Object> map) {return blogTypeDao.list(map);}public Long getTotal(Map<String, Object> map) {return blogTypeDao.getTotal(map);}public Integer add(BlogType blogType) {return blogTypeDao.add(blogType);}public Integer update(BlogType blogType) {return blogTypeDao.update(blogType);}public Integer delete(Integer id) {return blogTypeDao.delete(id);}}

     CommentServiceImpl.java实现类:

package com.steadyjack.service.impl;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.steadyjack.dao.CommentDao;import com.steadyjack.entity.Comment;import com.steadyjack.service.CommentService;/** * title:CommentServiceImpl.java * description:评论Service实现类 * time:2017年1月16日 下午10:36:41 * author:debug-steadyjack */@Service("commentService")public class CommentServiceImpl implements CommentService{@Resourceprivate CommentDao commentDao;public int add(Comment comment) {return commentDao.add(comment);}public List<Comment> list(Map<String, Object> map) {return commentDao.list(map);}public Long getTotal(Map<String, Object> map) {return commentDao.getTotal(map);}public Integer delete(Integer id) {return commentDao.delete(id);}public int update(Comment comment) {return commentDao.update(comment);}}

     LinkServiceImpl.java实现类:

package com.steadyjack.service.impl;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.steadyjack.dao.LinkDao;import com.steadyjack.entity.Link;import com.steadyjack.service.LinkService;/** * title:LinkServiceImpl.java * description:友情链接Service实现类 * time:2017年1月16日 下午10:37:15 * author:debug-steadyjack */@Service("linkService")public class LinkServiceImpl implements LinkService{@Resourceprivate LinkDao linkDao;public int add(Link link) {return linkDao.add(link);}public int update(Link link) {return linkDao.update(link);}public List<Link> list(Map<String, Object> map) {return linkDao.list(map);}public Long getTotal(Map<String, Object> map) {return linkDao.getTotal(map);}public Integer delete(Integer id) {return linkDao.delete(id);}}

     同样的道理,在service.impl中的各个实现类中,自然用到了mapper类(即dao层的类):包括dao与xml配置文件,下面也贴出来。

     首先是package com.steadyjack.dao的各个dao层类:

     BlogDao.java:

package com.steadyjack.dao;import java.util.List;import java.util.Map;import com.steadyjack.entity.Blog;/** * title:BlogDao.java * description: 博客Dao接口 * time:2017年1月16日 下午10:34:19 * author:debug-steadyjack */public interface BlogDao {/** * 根据日期月份分组查询 - 月份-当年博客的数量 * @return */public List<Blog> countList();/** * 分页查询博客 * @return */public List<Blog> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 通过Id查找实体 * @param id * @return */public Blog findById(Integer id);/** * 更新博客信息 * @param blog * @return */public Integer update(Blog blog); /** * 获取上一个博客 * @param id * @return */public Blog getLastBlog(Integer id);/** * 获取下一个博客 * @param id * @return */public Blog getNextBlog(Integer id);/** * 添加博客信息 * @param blog * @return */public Integer add(Blog blog);/** * 删除博客信息 * @param id * @return */public Integer delete(Integer id);/** * 查询指定的博客类别下的博客数量 * @param typeId * @return */public Integer getBlogByTypeId(Integer typeId);}

    BloggerDao.java:

package com.steadyjack.dao;import com.steadyjack.entity.Blogger;/** * title:BloggerDao.java * description:博主Dao接口 * time:2017年1月16日 下午10:16:44 * author:debug-steadyjack */public interface BloggerDao {/** * 查询博主信息 * @return */public Blogger find();/** * 通过用户名查询用户 * @param userName * @return */public Blogger getByUserName(String userName);/** * 更新博主信息 * @param blogger * @return */public Integer update(Blogger blogger);}

    BlogTypeDao.java:

package com.steadyjack.dao;import java.util.List;import java.util.Map;import com.steadyjack.entity.BlogType;/** * title:BlogTypeDao.java * description:博客类型Dao接口 * time:2017年1月16日 下午10:11:14 * author:debug-steadyjack */public interface BlogTypeDao {/** * 查询所有博客类型 以及对应的博客数量 * @return */public List<BlogType> countList();/** * 通过id查询博客类型 * @param id * @return */public BlogType findById(Integer id);/** * 分页查询博客类别信息 * @param map * @return */public List<BlogType> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 添加博客类别信息 * @param blogType * @return */public Integer add(BlogType blogType);/** * 修改博客类别信息 * @param blogType * @return */public Integer update(BlogType blogType);/** * 删除博客类别信息 * @param id * @return */public Integer delete(Integer id);}

    CommentDao.java:

package com.steadyjack.dao;import java.util.List;import java.util.Map;import com.steadyjack.entity.Comment;/** * title:CommentDao.java * description:评论Dao接口 * time:2017年1月16日 下午10:28:17 * author:debug-steadyjack */public interface CommentDao {/** * 添加评论 * @param comment * @return */public int add(Comment comment);/** * 修改评论 * @param comment * @return */public int update(Comment comment);/** * 查找用户评论信息 * @param map * @return */public List<Comment> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 删除评论信息 * @param id * @return */public Integer delete(Integer id);}

    LinkDao.java:

package com.steadyjack.dao;import java.util.List;import java.util.Map;import com.steadyjack.entity.Link;/** * title:LinkDao.java * description:友情链接Dao接口 * time:2017年1月16日 下午10:31:28 * author:debug-steadyjack */public interface LinkDao {/** * 添加友情链接 * @param link * @return */public int add(Link link);/** * 修改友情链接 * @param link * @return */public int update(Link link);/** * 查找友情链接信息 * @param map * @return */public List<Link> list(Map<String,Object> map);/** * 获取总记录数 * @param map * @return */public Long getTotal(Map<String,Object> map);/** * 删除友情链接 * @param id * @return */public Integer delete(Integer id);}

    最后是mapper配置文件,包目录为com.steadyjack.mappers。

    BloggerMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.steadyjack.dao.BloggerDao"><resultMap type="Blogger" id="BloggerResult"><result property="id" column="id"/><result property="userName" column="userName"/><result property="password" column="password"/><result property="nickName" column="nickName"/><result property="sign" column="sign"/><result property="proFile" column="proFile"/><result property="imageName" column="imageName"/></resultMap><select id="find"  resultMap="BloggerResult">select * from tb_blogger where id=1;</select><select id="getByUserName" parameterType="String" resultMap="BloggerResult">select * from tb_blogger where userName=#{userName}</select><update id="update" parameterType="Blogger">update tb_blogger<set><if test="password!=null and password!='' ">password=#{password},</if><if test="nickName!=null and nickName!='' ">nickName=#{nickName},</if><if test="sign!=null and sign!='' ">sign=#{sign},</if><if test="proFile!=null and proFile!='' ">proFile=#{proFile},</if><if test="imageName!=null and imageName!='' ">imageName=#{imageName},</if></set>where id=1</update></mapper> 

    BlogMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.steadyjack.dao.BlogDao"><resultMap type="Blog" id="BlogResult"><result property="id" column="id"/><result property="title" column="title"/><result property="summary" column="summary"/><result property="releaseDate" column="releaseDate"/><result property="clickHit" column="clickHit"/><result property="replyHit" column="replyHit"/><result property="content" column="content"/><result property="keyWord" column="keyWord"/><association property="blogType" column="typeId" select="com.steadyjack.dao.BlogTypeDao.findById"></association></resultMap><select id="countList"  resultMap="BlogResult">SELECT DATE_FORMAT(releaseDate,'%Y年%m月') AS releaseDateStr ,COUNT(*) AS blogCount  FROM tb_blog GROUP BY DATE_FORMAT(releaseDate,'%Y年%m月') ORDER BY DATE_FORMAT(releaseDate,'%Y年%m月') DESC;</select><select id="list" parameterType="Map" resultMap="BlogResult">select * from tb_blog<where>    <if test="title!=null and title!='' ">and title like #{title}</if><if test="typeId!=null and typeId!='' ">and typeId = #{typeId}</if><if test="releaseDateStr!=null and releaseDateStr!='' ">and DATE_FORMAT(releaseDate,'%Y年%m月') = #{releaseDateStr}</if></where>order by releaseDate desc<if test="start!=null and size!=null">limit #{start},#{size}</if></select><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from tb_blog<where>    <if test="title!=null and title!='' ">and title like #{title}</if><if test="typeId!=null and typeId!='' ">and typeId = #{typeId}</if><if test="releaseDateStr!=null and releaseDateStr!='' ">and DATE_FORMAT(releaseDate,'%Y年%m月') = #{releaseDateStr}</if></where></select><select id="findById" parameterType="Integer" resultMap="BlogResult">select * from tb_blog where id=#{id}</select><update id="update" parameterType="Blog">update tb_blog<set><if test="title!=null and title!='' ">title=#{title},</if><if test="summary!=null and summary!='' ">summary=#{summary},</if><if test="content!=null and content!='' ">content=#{content},</if><if test="blogType.id!=null ">typeId=#{blogType.id},</if><if test="clickHit!=null ">clickHit=#{clickHit},</if><if test="replyHit!=null ">replyHit=#{replyHit},</if><if test="keyWord!=null and keyWord!='' ">keyWord=#{keyWord},</if></set>where id=#{id}</update><select id="getLastBlog" parameterType="Integer" resultMap="BlogResult">SELECT * FROM tb_blog WHERE id<#{id} ORDER BY id DESC LIMIT 1</select><select id="getNextBlog" parameterType="Integer" resultMap="BlogResult">SELECT * FROM tb_blog WHERE id>#{id} ORDER BY id ASC LIMIT 1</select><insert id="add" useGeneratedKeys="true" keyProperty="id" parameterType="Blog">insert into tb_blog values(null,#{title},#{summary},now(),0,0,#{content},#{blogType.id},#{keyWord})</insert><delete id="delete" parameterType="Integer">delete from tb_blog where id=#{id}</delete><select id="getBlogByTypeId" parameterType="Integer" resultType="Integer">select count(*) from tb_blog where typeId=#{typeId}</select></mapper> 

    BlogTypeMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.steadyjack.dao.BlogTypeDao"><resultMap type="BlogType" id="BlogTypeResult"><result property="id" column="id"/><result property="typeName" column="typeName"/><result property="blogCount" column="blogCount"/><result property="orderNo" column="orderNo"/></resultMap><select id="countList" resultMap="BlogTypeResult">SELECT t2.id,t2.typeName,COUNT(t1.id) AS blogCount FROM tb_blog t1 RIGHT JOIN tb_blogType t2 ON t1.typeId=t2.id GROUP BY t2.typeName order by t2.orderNo;</select><select id="findById" parameterType="Integer" resultMap="BlogTypeResult">select * from tb_blogType where id=#{id}</select><select id="list" parameterType="Map" resultMap="BlogTypeResult">select * from tb_blogType<if test="start!=null and size!=null">limit #{start},#{size}</if></select><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from tb_blogType</select><insert id="add" parameterType="BlogType">insert into tb_blogType values(null,#{typeName},#{orderNo});</insert><update id="update" parameterType="BlogType">update tb_blogType<set><if test="typeName!=null and typeName!='' ">typeName=#{typeName},</if><if test="orderNo!=null ">orderNo=#{orderNo},</if></set>where id=#{id}</update><delete id="delete" parameterType="Integer">delete from tb_blogType where id=#{id}</delete></mapper> 

    CommentMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.steadyjack.dao.CommentDao"><resultMap type="Comment" id="CommentResult"><result property="id" column="id"/><result property="userIp" column="userIp"/><result property="content" column="content"/><result property="commentDate" column="commentDate"/><result property="state" column="state"/><association property="blog" column="blogId" select="com.steadyjack.dao.BlogDao.findById"></association></resultMap><insert id="add" parameterType="Comment">insert into tb_comment values(null,#{userIp},#{blog.id},#{content},now(),0)</insert><update id="update" parameterType="Comment">update tb_comment<set><if test="state!=null">state=#{state},</if></set>where id=#{id}</update><select id="list" parameterType="Map" resultMap="CommentResult">select * from tb_comment<where><if test="blogId!=null">and blogId=#{blogId}</if><if test="state!=null">and state=#{state}</if></where>order by commentDate <if test="start!=null and size!=null">limit #{start},#{size}</if></select><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from tb_comment<where><if test="state!=null">and state=#{state}</if></where></select><delete id="delete" parameterType="Integer">delete from tb_comment where id=#{id}</delete></mapper> 

    LinkMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.steadyjack.dao.LinkDao"><resultMap type="Link" id="LinkResult"><result property="id" column="id"/><result property="linkName" column="linkName"/><result property="linkUrl" column="linkUrl"/><result property="orderNo" column="orderNo"/></resultMap><insert id="add" parameterType="Link">insert into tb_link values(null,#{linkName},#{linkUrl},#{orderNo})</insert><update id="update" parameterType="Link">update tb_link<set><if test="linkName!=null and linkName!='' ">linkName=#{linkName},</if><if test="linkUrl!=null and linkUrl!='' ">linkUrl=#{linkUrl},</if><if test="orderNo!=null">orderNo=#{orderNo},</if></set>where id=#{id}</update><select id="list" parameterType="Map" resultMap="LinkResult">select * from tb_link order by orderNo<if test="start!=null and size!=null">limit #{start},#{size}</if></select><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from tb_link</select><delete id="delete" parameterType="Integer">delete from tb_link where id=#{id}</delete></mapper> 

    然后把shiro配置文件中自定义的realm也贴出来吧,用于用户权限认证授权。包package com.steadyjack.realm,建立MyRealm.java:

package com.steadyjack.realm;import javax.annotation.Resource;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import org.apache.shiro.authc.AuthenticationToken;import org.apache.shiro.authc.SimpleAuthenticationInfo;import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.realm.AuthorizingRealm;import org.apache.shiro.subject.PrincipalCollection;import com.steadyjack.entity.Blogger;import com.steadyjack.service.BloggerService;/** * title:MyRealm.java * description:自定义Realm(域) * time:2017年1月22日 下午10:50:57 * author:debug-steadyjack */public class MyRealm extends AuthorizingRealm{@Resourceprivate BloggerService bloggerService;/** * 为当限前登录的用户授予角色和权 * (由于目前系统没有啥资源且只有admin超级用户,故而没写授予角色、权限(资源)逻辑) */@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {return null;}/** * 验证当前登录的用户 * (成功时,将登陆用户绑定到会话中;失败时,其实会报各种exception,理当抛出用于前端页面展示(后期实现)) */@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {//获取身份(在这里指 用户名)-凭证(在这里指 密码)String userName=(String)token.getPrincipal();Blogger blogger=bloggerService.getByUserName(userName);if(blogger!=null){//当前用户信息存到session中SecurityUtils.getSubject().getSession().setAttribute("currentUser", blogger); AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(blogger.getUserName(),blogger.getPassword(),getName());return authcInfo;}else{return null;}}}

     至此,基本上后端mvc的dao层与service层跟model都已经分享完毕。可能缺一些util(下篇贴出),加入util之后,再开发controller与页面解析,基本上系统慢慢就起来了。。。。

     如果有相关问题:如想找我付费开发其他功能,讨论其中相关问题等等,可以来以下两群找我,我叫debug!

     Java开源技术交流:583522159     鏖战八方群:391619659


阅读全文
0 0
原创粉丝点击