SSM框架下基本的mapper,dao,service,controller等相关文件的整理

本文详细介绍SSM框架下的分层设计,包括Model、Mapper、DAO、Service及Controller各层的作用与实现方式,并探讨如何通过合理分层提高开发效率。

  

SSM框架下基本的mapper,dao,service,controller等相关文件的整理

(新手整理,有不详细和不正确的地方还望指正以便即使改进)

Model里面多对应的字段Dao层的路径参数所对应的map的id,方法名称<mapper namespace="com.ts.ssm.dao.UserDao">    <resultMap id="UserBaseMap" type="com.ts.ssm.model.User">        <id column="id" property="id" jdbcType="BIGINT"/>        <result column="user_name" property="userName" jdbcType="VARCHAR"/>        <result column="user_phone" property="userPhone" jdbcType="VARCHAR"/>        <result column="user_email" property="userEmail" jdbcType="VARCHAR"/>        <result column="user_pwd" property="userPwd" jdbcType="VARCHAR"/>        <result column="pwd_salt" property="pwdSalt" jdbcType="VARCHAR"/>        <result column="create_time" property="createTime" jdbcType="DATE"/>        <result column="modify_time" property="modifyTime" jdbcType="DATE"/>            </resultMap>    <select id="selectUserById" parameterType="java.lang.Long" resultMap="UserBaseMap">        SELECT * FROM t_user        WHERE id = #{userId}    </select>    <select id="selectUserByPhoneOrEmail" resultMap="UserBaseMap">        SELECT * FROM t_user        WHERE user_email = #{emailOrPhone} OR user_phone = #{emailOrPhone}        AND user_state = #{state}    </select>    <select id="selectAllUser" resultMap="UserBaseMap">        SELECT * FROM t_user    </select></mapper>数据类型数据库字段名称这个是对应的modelMapper文件的整理:

一般来说我首先是写完model 层写dao层,再去写sevice层再去写它的impl层,最后去写它的controller层

 

Model层不做解释,但是可以用lombok来简化一个繁琐的get,set方法等。
主要是controller和service和dao之间的
 
Dao层的整理:

用于标注数据访问组件,即DAO组件package com.ts.ssm.dao;import com.ts.ssm.model.User;import org.apache.ibatis.annotations.Param;import org.springframework.stereotype.Repository;import java.util.List;/** * Created by ts on 2016/12/23. */@Repositorypublic interface UserDao {    User selectUserById(@Param("userId") Long userId);    User selectUserByPhoneOrEmail(@Param("emailOrPhone") String emailOrPhone, @Param("state") Short state);    List<User> selectAllUser();}Mapper文件中所对应的方法和传入相关的参数     dao层,你也可以把它拆分成dao和impl写,个人觉得service我已经拆分成了service和serviceimpl所以我就不再对dao层进行拆分了。

Service层的整理:

package com.ts.ssm.service;import com.ts.ssm.model.User;import java.util.List;/** * Created by ts on 2016/12/23. */public interface UserService {    List<User> getAllUser();    User getUserByPhoneOrEmail(String emailOrPhone, Short state);    User getUserById(Long userId);}     该层其实就是一个接口,没有具体的实现,主要是声明方法。不做叙述。

Service的impl层的整理:

装配bean@Service用于标注业务层组件(我们通常定义的service层就用这个)异常回滚package com.ts.ssm.service.impl;import com.ts.ssm.dao.UserDao;import com.ts.ssm.model.User;import com.ts.ssm.service.UserService;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;import java.util.List;/** * Created by ts on 2016/12/23. */@Service@Transactional(rollbackFor = Exception.class)public class UserServiceImpl implements UserService {    @Resource    private UserDao userDao;    public User getUserById(Long userId) {        return userDao.selectUserById(userId);    }    public User getUserByPhoneOrEmail(String emailOrPhone, Short state) {        return userDao.selectUserByPhoneOrEmail(emailOrPhone,state);    }    public List<User> getAllUser() {        return userDao.selectAllUser();    }}     该层继承service层后去调用dao层去对方法去实现

 

 

 

 

 

 

Controller层的整理:

package com.ts.ssm.controller;import com.ts.ssm.model.User;import com.ts.ssm.service.UserService;import org.apache.log4j.Logger;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import java.util.List;/** * Created by ts on 2016/12/23. */@Controller@RequestMapping("/user")public class UserController {    private Logger log = Logger.getLogger(UserController.class);    @Resource    private UserService userService;    @RequestMapping("/showUser")    public String showUser(HttpServletRequest request, Model model){        log.info("查询所有用户信息");        List<User> userList = userService.getAllUser();        model.addAttribute("userList",userList);        return "showUser";    }}     在springmvc中经常叫做controller层,在ssh框架下面一般是action层,该层主要对访问的路径的方法进行类似于“拦截”,对其ModelandView的处理

 


·
·
·
·
返回顶部
SSM(Spring + Spring MVC + MyBatis)框架中,ControllerServiceDAO的执行过程如下: 1. Controller层接收请求:当用户发送一个请求时,请求首先通过DispatcherServlet(前端控制器)进入Spring MVC框架。DispatcherServlet根据请求的URL和配置的路径映射,将请求转发给相应的Controller类。 2. Controller处理请求:Controller类中的方法使用注解(如@RequestMapping)来映射特定的URL,并处理请求。在Controller方法中,可以通过参数注解(如@PathVariable、@RequestParam)获取请求参数,并调用Service层的方法来处理业务逻辑。 3. Service层处理业务逻辑:Service层是应用程序的业务逻辑层,它接收Controller传递的请求,并通过调用DAO层提供的方法来访问数据库。在Service层,可以进行事务管理、数据转换、复杂的业务计算等任务。 4. DAO层访问数据库:DAO层负责与数据库交互,封装了对数据库的增删改查等基本操作。DAO层通过MyBatis框架提供的ORM(对象关系映射)功能,将数据库表映射为Java对象,通过SQL语句执行数据库操作。 5. 数据库操作完成后,数据返回给Service层:DAO层执行完数据库操作后,将查询结果或操作结果返回给Service层。 6. Service层将结果返回给ControllerService层接收到DAO层返回的结果后,可以对结果进行处理、封装,然后将结果返回给Controller层。 7. Controller返回响应:Controller接收到Service层返回的结果后,可以进行一些额外的处理(如数据转换、视图解析等),然后将结果返回给前端,生成响应。 总结来说,Controller负责接收请求和返回响应,Service负责处理业务逻辑,DAO负责与数据库交互。它们之间通过调用方法和传递数据来完成整个请求处理流程。这样的分层架构可以提高代码的可维护性、可测试性和可扩展性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值