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

SSM框架整合(以黑马程序员2022最新SSM框架教程P59为例)

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

SSM框架整合(以黑马程序员2022最新SSM框架教程P59为例)

目录

1. 创建一个Maven项目

2. 引入Maven依赖 

3. 编写配置类

SpringConfig类

JdbcConfig类

MyBatisConfig类

SpringMvcConfig类

ServletConfig类

4. 功能模块开发

domain实体类层

dao数据层

service业务层

controller表现层


总结,以备随时取用该框架。

1. 创建一个Maven项目

 等待maven配置完成...

添加必要的文件夹:

 

2. 引入Maven依赖 



  4.0.0

  com.itheima
  springmvc_ssm
  1.0-SNAPSHOT
  war

  
    UTF-8
    1.8
    1.8
  

  
    
      org.springframework
      spring-webmvc
      5.2.10.RELEASE
    
    
      org.springframework
      spring-jdbc
      5.2.10.RELEASE
    
    
      org.springframework
      spring-test
      5.2.10.RELEASE
    

    
      org.mybatis
      mybatis
      3.5.6
    
    
      org.mybatis
      mybatis-spring
      1.3.0
    
    
      mysql
      mysql-connector-java
      5.1.47
    

    
      com.alibaba
      druid
      1.1.16
    

    
      junit
      junit
      4.13.1
      test
    

    
      javax.servlet
      servlet-api
      2.5
      provided
    

    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.0
    
  

  
    
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
          80
          /
        
      
    
  

3. 编写配置类

 

SpringConfig类
package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration//设置当前类为spring的配置类
@ComponentScan({"com.itheima.service"})//扫描加载所控制的bean
@PropertySource("classpath:jdbc.properties")//指定资源文件读取的位置
@Import({JdbcConfig.class, MybatisConfig.class})//该注解用于导入其他的配置类
@EnableTransactionManagement//开启事务!!!!!!!!!
public class SpringConfig {
}

JdbcConfig类
package com.itheima.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;


public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager ds = new DataSourceTransactionManager();
        ds.setDataSource(dataSource);
        return ds;
    }
}

MyBatisConfig类
package com.itheima.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MybatisConfig {

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        //该属性可以给包中的类注册别名,注册后可以直接使用类名,而不用使用全限定的类名(就是不用包含包名)。
        factoryBean.setTypeAliasesPackage("com.itheima.domain");
        return factoryBean;
    }

    //扫描映射,即dao包
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.itheima.dao");
        return msc;
    }
}

SpringMvcConfig类
package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

ServletConfig类
package com.itheima.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    protected Class[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //乱码处理——post表单提交时处理中文乱码
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

4. 功能模块开发

 domain实体类层
package com.itheima.domain;

public class Book {
    //属性名一定要和数据库中的属性名一致
    private Integer id;
    private String type;
    private String name;
    private String description;

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", type='" + type + ''' +
                ", name='" + name + ''' +
                ", desc='" + description + ''' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

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

    public String getDesc() {
        return description;
    }

    public void setDesc(String description) {
        this.description = description;
    }
}

dao数据层
package com.itheima.dao;

import com.itheima.domain.Book;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface BookDao {

//    @Insert("insert into tb_book values(null,#{type},#{name},#{desc})")
    @Insert("insert into tb_book (type,name,description) values(#{type},#{name},#{description});")
    public void save(Book book);

    @Update("update tb_book set type = #{type}, name = #{name}, description = #{description} where id=#{id};")
    public void update(Book book);

    @Delete("delete from tb_book where id=#{id};")
    public void delete(Integer id);

    @Select("select * from tb_book where id=#{id};")
    public Book getById(Integer id);

    @Select("select * from tb_book")
    public List getAll();
}

service业务层

接口

package com.itheima.service;

import com.itheima.domain.Book;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface BookService {

    
    public boolean save(Book book);

    
    public boolean update(Book book);

    
    public boolean delete(Integer id);

    
    public Book getById(Integer id);

    
    public List getAll();
}

实现类

package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.domain.Book;
import com.itheima.service.BookService;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    public boolean save(Book book) {
        bookDao.save(book);
        return true;
    }

    public boolean update(Book book) {
        bookDao.update(book);
        return true;
    }

    public boolean delete(Integer id) {
        bookDao.delete(id);
        return true;
    }

    public Book getById(Integer id) {
        return bookDao.getById(id);
    }

    public List getAll() {
        return bookDao.getAll();
    }
}

controller表现层

该层是服务器与前端连接交互的接口,前端数据接收、访问形式,后端结果反馈形式,各层错误处理等都在这一层实现。这里只展示最基础的REST风格的交互方式。

package com.itheima.controller;

import com.itheima.domain.Book;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;

    @PostMapping
    public boolean save(@RequestBody Book book) {
        return bookService.save(book);
    }

    @PutMapping
    public boolean update(@RequestBody Book book) {
        return bookService.update(book);
    }

    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable Integer id) {
        return bookService.delete(id);
    }

    @GetMapping("/{id}")
    public Book getById(@PathVariable Integer id) {
        return bookService.getById(id);
    }

    @GetMapping
    public List getAll() {
        return bookService.getAll();
    }
}

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

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

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