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

SSM框架整合

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

SSM框架整合

SSM框架的整合就是将MyBatis中的session工厂的创建权交给Spring,并在创建session工厂时把内部需要的信息进行注入

原始方式整合 创建数据库的表

导入坐标
 
    
      org.springframework
      spring-context
      5.0.5.RELEASE
    
    
      org.aspectj
      aspectjweaver
      1.8.7
    
    
      org.springframework
      spring-jdbc
      5.0.5.RELEASE
    
    
      org.springframework
      spring-tx
      5.0.5.RELEASE
    
    
      org.springframework
      spring-test
      5.0.5.RELEASE
    
    
      org.springframework
      spring-webmvc
      5.0.5.RELEASE
    

    
    
      javax.servlet
      servlet-api
      2.5
    
    
      javax.servlet.jsp
      jsp-api
      2.0
    

    
    
      org.mybatis
      mybatis
      3.4.6
    
    
      org.mybatis
      mybatis-spring
      1.3.1
    
    
      mysql
      mysql-connector-java
      8.0.21
    
    
      c3p0
      c3p0
      0.9.1.2
    

    
      junit
      junit
      4.12
    
    
      jstl
      jstl
      1.2
    
编写实体类
package com.zg.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;
    }
}

编写Mapper接口
package com.zg.mapper;



import com.zg.domain.Account;

import java.util.List;

public interface AccountMapper {
	//保存
    public void save(Account account);
	//查询
    public List findAll();

}

service层的实现
package com.zg.service.impl;


import com.zg.domain.Account;
import com.zg.mapper.AccountMapper;
import com.zg.service.AccountService;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@Service("accountService")
public class AccountServiceImpl implements AccountService {



    @Override
    public void save(Account account) {
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            AccountMapper mapper = sqlSession.getMapper(AccountMapper.class);
            mapper.save(account);
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public List findAll() {
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            AccountMapper mapper = sqlSession.getMapper(AccountMapper.class);
            List accountList = mapper.findAll();
            sqlSession.close();
            return accountList;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

编写Web层
package com.zg.controller;


import com.zg.domain.Account;
import com.zg.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;
    }

}

编写添加页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>


    Title


    

添加账户信息表单

账户名称:
账户金额:

编写列表页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


    

展示账户数据列表

账户id 账户名称 账户金额
${account.id} ${account.name} ${account.money}
编写相应配置文件

Spring配置文件:applicationContext.xml




    
    
        
        
    

    
    

SpringMVC配置文件:spring-mvc.xml




    
    
    
    
    
    
        
        
    
    
    



MyBatis映射文件:AccountMapper.xml





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

    
        select * from account
    

MyBatis核心文件:sqlMapConfig.xml





    
    

    
    
        
        
        
    

    
    
        
            
            
                
                
                
                
            
        
    

    
    
        
        
    



数据库连接信息文件:jdbc.properties

jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test?serverTimezone=UTC
jdbc.username = root
jdbc.password = root

Web.xml文件:web.xml




    
    
        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
        /*
    




日志文件:log4j.xml

#
# Hibernate, Relational Persistence for Idiomatic Java
#
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
# See the lgpl.txt file in the root directory or .
#

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=all, stdout

Spring整合MyBatis

在原始整合时会有一定的弊端,在service层中每次都要加载MyBatis配置文件,也都会创建一个session工厂类进行事务提交,在service中需要用到AccountMapper,所以就用Spring容器生成AccountMapper,直接把AccountMapper从容器中注入到service内部(AccountServiceImpl),因为service本身也在spring容器中,只要spring如果帮我们能产生AccountMapper对应的bean,注入后就可以使用了。
事务的提交可以使用声明式事务控制

将SqlSessionFactory配置到Spring容器中

SqlSessionFactory原来是通过API进行配置的,而现在的工厂让Spring来创建,然后让Spring创建对应的Mapper,当Mapper在容器中意味着在service中可以直接将Mapper注入

在MyBatis的核心配置中的数据源同样也可抽取到Spring容器中

applicationContext.xml

其实 就是将session工厂的创建权交给Spring,并在创建session工厂时把内部需要的信息进行注入




    
    
        
        
    

    
    

    
    
        
        
        
        
    

    
    
        
        
        
    

    
    
        
    


    
    
    
        
    

    
    
        
            
        
    

    
    
        
    


sqlMapConfig.xml核心配置文件




    
    
        
       
    


AccountServiceImpl
package com.zg.service.impl;


import com.zg.domain.Account;
import com.zg.mapper.AccountMapper;
import com.zg.service.AccountService;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@Service("accountService")
public class AccountServiceImpl implements AccountService {



    @Autowired
    private AccountMapper accountMapper;

    @Override
    public void save(Account account) {
        accountMapper.save(account);
    }

    @Override
    public List findAll() {
        return accountMapper.findAll();
    }
}

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

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

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