SSM 框架整合

1 整合配置

1.1 流程

SSM 框架整合_第1张图片

1.2  Spring 整合 MyBatis

SSM 框架整合_第2张图片

SSM 框架整合_第3张图片

 1.3 Spring 整合 SpringMVC

SSM 框架整合_第4张图片

SSM 框架整合_第5张图片

SSM 框架整合_第6张图片

1.4 配置代码

JdbcConfig.java

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.java

public class MyBatisConfig {

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean (DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.it.domain");
        return factoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.it.dao");
        return msc;
    }
}

ServletConfig.java

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

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

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

SpringConfig.java

@Configuration
@ComponentScan({"com.it.service"})
@PropertySource("jdbc.properties")
@Import({JdbcConfig.class, MyBatisConfig.class})
@EnableTransactionManagement  //开启注解事务驱动
public class SpringConfig {
}

 SpringMvcConfig.java

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

}

2 功能模块开发

BookController.java

@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();
    }

}

3 数据协议

SSM 框架整合_第7张图片

SSM 框架整合_第8张图片

SSM 框架整合_第9张图片

4 异常处理器

SSM 框架整合_第10张图片

【注】各个层级均可能出现异常,所以将异常统一往上抛,抛到表现层进行处理,且对于不同的异常应该进行分类处理。此外,若将异常放在每个方法中单独书写,代码书写量巨大且无意义,所以应当采用AOP思想进行处理。Spring为此提供了异常处理器。

SSM 框架整合_第11张图片

SSM 框架整合_第12张图片

SSM 框架整合_第13张图片

5 项目异常处理

项目异常分类

SSM 框架整合_第14张图片

SSM 框架整合_第15张图片

SSM 框架整合_第16张图片

SSM 框架整合_第17张图片

具体实施步骤

SSM 框架整合_第18张图片SSM 框架整合_第19张图片

SSM 框架整合_第20张图片SSM 框架整合_第21张图片

【注】实际开发的时候,我们可以用 AOP 把那些常见的 circle 异常等包装成 system 异常,对于业务型异常有多少写多少

SSM 框架整合_第22张图片

【注】Result 是用来规范我们的返回结果的 

SSM 框架整合_第23张图片

你可能感兴趣的:(SpringMVC,Spring,MyBatis,java,开发语言)