6. SSM整合

1. SSM整合配置

  1. 创建工程
  2. SSM整合
    • Spring
      • SpringConfig
    • MyBatis
      • MybatisConfig
      • JdbcConfig
      • jdbc.properties
    • SpringMVC
      • ServletContainerInitConfig
      • SpringMvcConfig

1.1 创建工程,添加依赖和插件

image-20221224180626382
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.16</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <port>80</port>
                <path>/</path>
            </configuration>
        </plugin>
    </plugins>
</build>

1.2 Spring整合Mybatis

1.2.1 jdbc.properties属性文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?SSL=false
jdbc.username=root
jdbc.password=1234
1.2.2 JdbcConfig配置类
package com.zhang.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

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 getDataSource(){

        DruidDataSource dataSource = new DruidDataSource();

        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        return dataSource;

    }
    
    
    //Spring事务管理需要的平台事务管理器对象
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){

        DataSourceTransactionManager ds = new DataSourceTransactionManager();
        ds.setDataSource(dataSource);
        return ds;
    }
}

1.2.3 MybatisConfig配置类
package com.zhang.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 sqlSessionFactoryBean(DataSource dataSource){

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.zhang.domain");
        return sqlSessionFactoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.zhang.dao");

        return mapperScannerConfigurer;
    }


}

1.2.4 SpringConfig配置类
package com.zhang.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.zhang.dao","com.zhang.service"})//bean包扫描(准确扫描)
@PropertySource("classpath:jdbc.properties")//加载外部properties文件
@Import({JdbcConfig.class,MybatisConfig.class})//加载Druid数据源的bean,加载SqlSessionFactoryBean
@EnableTransactionManagement//开启Spring事务管理
public class SpringConfig {
}

1.3 Spring整合SpringMVC

1.3.1 SpringMvcConfig配置类
package com.zhang.config;

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

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

1.3.2 ServletContainerInitConfig配置类,加载SpringMvcConfig和SpringConfig配置类
package com.zhang.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {

    protected WebApplicationContext createServletApplicationContext() {

        AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
        webApplicationContext.register(SpringMvcConfig.class);

        return webApplicationContext;

    }

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

    protected WebApplicationContext createRootApplicationContext() {
        AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
        webApplicationContext.register(SpringConfig.class);

        return webApplicationContext;
    }
}

2. 功能模块开发

2.1 数据层

package com.zhang.dao;

import com.zhang.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 tbl_book values(null,#{type},#{name},#{description}))")
    void save(Book book);

    /**
     * 删
     */
    @Delete("delete from tbl_book where id =#{id}}")
    void deleteById(Integer id);


    /**
     * 改
     */

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


    /**
     * 查
     */
    @Select("select * from tbl_book")
    List<Book> getAll();

    @Select("select * from tbl_book where id = #{id}")
    Book queryById(Integer id);




}

2.2 业务层接口

package com.zhang.service;

import com.zhang.domain.Book;

import java.util.List;

public interface BookService {
    //增
    Boolean save(Book book);
    //删
    Boolean deleteById(Integer id);
    //改
    Boolean update(Book book);
    //查单个
    Book queryById(Integer id);
    //查所有
    List<Book> getAll();

}

2.3 业务层实现类

package com.zhang.service.impl;

import com.zhang.dao.BookDao;
import com.zhang.domain.Book;
import com.zhang.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@Transactional //表示所有方法进行事务管理
public class BookServiceImpl implements BookService {


    @Autowired
    private BookDao bookDao;

    /**
     * 增
     * @param book
     * @return
     */
    public Boolean save(Book book) {
        return true;
    }

    /**
     * 删
     * @param id
     * @return
     */
    public Boolean deleteById(Integer id) {
        return true;
    }

    /**
     * 改
     * @param book
     * @return
     */
    public Boolean update(Book book) {
        return true;
    }

    /**
     * 查单个
     * @param id
     * @return
     */
    public Book queryById(Integer id) {
        return bookDao.queryById(id);
    }

    /**
     * 查所有
     * @return
     */
    public List<Book> getAll() {

        List<Book> bookList = bookDao.getAll();

        return bookList;
    }
}

2.4 Controller

package com.zhang.controller;

import com.zhang.domain.Book;
import com.zhang.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("/save")
    public Boolean save(@RequestBody Book book){

        return bookService.save(book);
    }


    /**
     * 删
     */

    @DeleteMapping("/delete/{id}")
    public Boolean deleteById(@PathVariable("id") Integer id){

        return bookService.deleteById(id);
    }





    /**
     * 改
     */
    @PutMapping("/update")
    public Boolean update(@RequestBody Book book){
        return bookService.update(book);
    }


    /**
     * 查一个
     */

    @GetMapping("getAll/{id}")
    public Book queryById(@PathVariable("id") Integer id){

        Book book = bookService.queryById(id);
        return book;
    }



    /**
     * 查所有
     */

    @GetMapping("/getAll")
    public List<Book> getAll(){

        List<Book> books = bookService.getAll();

        System.out.println("查询成功");
        return books;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖分你俩颗~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值