栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM框架整合简单案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM框架整合简单案例

结合之前学过的ssm框架整合课程,记录一下简单的SSM框架整合,重点在于配置文件的书写(思想),以后随着SpringBoot框架的使用,SSM框架繁重的配置可能我们很少接触,但是着重体会一下SSM框架的配置思想。

项目结构图如下所示:


SSM框架整合重点在于用Spring集成MyBatis框架,下面将从Mapper层(Dao)往上进行分析:

mapper层

我们编写AccountMapper接口,以后都是代理开发方式,MyBatis框架将自动为我们生成实现类,Mapper接口要和映射文件遵循一定的对应规则。

package com.itheima.mapper;

import com.itheima.domain.Account;

import java.util.List;

public interface AccountMapper {

   public void save(Account account);

   public List findAll();

}

这是AccountMapper的映射配置文件,namespace要和接口的全限定名一样,接口方法名要和每个sql语句的id值一样,接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同,接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同(起了别名就可以直接写Account)




    
        insert into account values(#{id},#{name},#{money})
    
    
        select * from account
    


集成了Spring后,myBatis很多配置就直接在spring配置文件中进行了,此时MyBatis只需要定义别名即可,此处定义别名使用扫描包的方式定义的,domain包下的实体都会获得别名,为类名,首字母大小写均可,以后可以直接用类名而不是全限定名来指定参数类型了。
MyBaits核心配置类:





    
    
        
        
    


Spring配置
Spring核心配置文件如下:

首先进行组件扫描扫描注解,扫描Service和Mapper以后就能直接得到对应的Bean,直接注入到Controller和Service中进行使用,注意要排除controller的扫描,因为MVC要自己扫描自己的Controller注解,以免发生地址映射错误。

按照测试和结合其他博客的解释:Spring容器和SpringMVC容器存在父子关系,父容器不能访问子容器,子容器可以访问父容器。所以这也就是Service层里面绝对是注入不了Controller。Spring只能扫描到 Dao,Service
SpringMVC可以扫描到 Dao,Service,Controller




    
    
        
        
    

    
    

    
    
        
        
        
        
    

    
    
        
        
        
    

    
    
        
    


    
    
    
        
    

    
    
        
            
        
    

    
    
        
    



注意,spring和MyBatis整合后,很多MyBatis核心配置类里配置的东西,直接注入到Spring容器中,都由Spring配置类完成,如加载Jdbc.properties、数据源的配置、声明式事务控制等,另外,因为怕每次获得bean都要使用sqlSession麻烦,咱们直接把他注入到spring容器中,以后就可以在service层中直接注入mapper了,还有,mapper层进行包扫描,为了实现sql和接口的映射关系,以及给mapper接口自动生成实现类。

MVC的配置

MVC要扫描Controller层的注解,并配置内部资源视图解析器,开放静态资源访问权限,开启注解驱动:




    
    
    
    
    
    
        
        
    
    
    



web,xml中,spring集成web要配置监听器,MVC的前端控制器要配置在这儿,再来一个乱码过滤器




    
    
        contextConfigLocation
        classpath:applicationContext.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
    
        DispatcherServlet
        /
    

    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        CharacterEncodingFilter
        /*
    


最后Controller如下,可以对其进行接口测试

package com.itheima.controller;

import com.itheima.domain.Account;
import com.itheima.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
@RequestMapping("/account")
public class AccountController {

    @Autowired
    private AccountService accountService;

    //保存
    @RequestMapping(value = "/save",produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String save(Account account){
        accountService.save(account);
        return "保存成功";
    }

    //查询
    @RequestMapping("/findAll")
    public ModelAndView findAll(){
        List accountList = accountService.findAll();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("accountList",accountList);
        modelAndView.setViewName("accountList");
        return modelAndView;
    }
}

实体类如下:

package com.itheima.domain;

public class Account {

    private Integer id;
    private String name;
    private Double money;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号