SpringBoot集成SSM(Spring+SpringMVC+Mybatis)

左手的ㄟ右手 2022-02-12 10:49 286阅读 0赞

(一)pom.xml

  1. <parent>
  2. <artifactId>springboot_parent</artifactId>
  3. <groupId>cn.lzj.springboot</groupId>
  4. <version>1.0-SNAPSHOT</version>
  5. </parent>
  6. <modelVersion>4.0.0</modelVersion>
  7. <artifactId>springboot_07_ss_jdbc</artifactId>
  8. <dependencies>
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-web</artifactId>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-test</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>mysql</groupId>
  19. <artifactId>mysql-connector-java</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-jdbc</artifactId>
  24. </dependency>
  25. </dependencies>

(二)准备mapper层

  • 注解方式

    //因为使用的是mybatis框架,此处的参数必须是#{name}
    @Insert(“insert into t_user(name) values(#{name})”)
    @Options(useGeneratedKeys = true,keyProperty = “id”,keyColumn = “id”)
    void save(User user);

  • xml方式

    <?xml version=”1.0” encoding=”UTF-8” ?>
    <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”

    1. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">



    insert into t_user(name) values(#{name})

  • 分页查询

    List queryPage(UserQuery query);

  • 配置分页拦截器

    package cn.lzj.springboot.basic.config;

    import com.github.pagehelper.PageHelper;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    import java.util.Properties;

    /**

    • mybatis的配置类,实现分页的拦截器
      */

    @Configuration //相当于我们建了applicationContext-xxx.xml
    public class MyBatisConfiguration {

    1. //相当于配置了一个bean
    2. //<bean class="com.github.pagehelper.PageHelper">
    3. //<property key="offsetAsPageNum" value="true"></property>
    4. //<property key="rowBoundsWithCount" value="true"></property>
    5. //<property key="reasonable" value="true"></property>
    6. // <bean/>
    7. @Bean
    8. public PageHelper pageHelper() {
    9. System.out.println("MyBatisConfiguration.pageHelper()");
    10. PageHelper pageHelper = new PageHelper();
    11. Properties p = new Properties();
    12. //配置分页参数的设置信息
    13. p.setProperty("offsetAsPageNum", "true");
    14. p.setProperty("rowBoundsWithCount", "true");
    15. p.setProperty("reasonable", "true");
    16. pageHelper.setProperties(p);
    17. return pageHelper;
    18. }

    }

(三)service层

  1. package cn.lzj.springboot.service.impl;
  2. import cn.lzj.springboot.domain.User;
  3. import cn.lzj.springboot.mapper.UserMapper;
  4. import cn.lzj.springboot.query.UserQuery;
  5. import cn.lzj.springboot.service.IUserService;
  6. import com.github.pagehelper.PageHelper;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Propagation;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.util.List;
  12. @Service
  13. @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)//类级别是只读事务
  14. public class UserServiceImpl implements IUserService {
  15. @Autowired
  16. private UserMapper userMapper;
  17. @Transactional(propagation = Propagation.REQUIRED,readOnly = false)
  18. //@Transactional 后两个配置是默认值
  19. public void add(User user) {
  20. userMapper.save(user);
  21. // int i = 1/0;
  22. }
  23. public List<User> queryPage(UserQuery query) {
  24. PageHelper.startPage(1, 2); //limit (pageNum-1)*pageSize,pageSize
  25. return userMapper.queryPage(query);
  26. }
  27. }

(四)mybatis的配置文件application.yml

使用的是YAML配置方式
shop是数据库名
3306的mysql的端口号
yaml的具体介绍详见:https://blog.csdn.net/qq_42136250/article/details/89643154

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://localhost:3306/shop
  4. driver-class-name: com.mysql.jdbc.Driver
  5. password: admin
  6. username: root
  7. #配置别名
  8. mybatis:
  9. type-aliases-package: cn.lzj.springboot.domain,cn.lzj.springboot.query

(五)数据库准备

在这里插入图片描述

(六)使用SpringBoot的测试

  1. package cn.lzj.springboot.service;
  2. import cn.lzj.springboot.SSMApplication;
  3. import cn.lzj.springboot.domain.User;
  4. import cn.lzj.springboot.query.UserQuery;
  5. import com.github.pagehelper.Page;
  6. import org.junit.Test;
  7. import org.junit.runner.RunWith;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.boot.test.context.SpringBootTest;
  10. import org.springframework.test.context.junit4.SpringRunner;
  11. @RunWith(SpringRunner.class)
  12. //指定入口类型,它就会扫描入口类子子孙孙包的bean
  13. @SpringBootTest(classes = SSMApplication.class)
  14. public class IUserServiceTest {
  15. @Autowired
  16. private IUserService userService;
  17. @Test
  18. public void testAdd(){
  19. User user = new User("王维");
  20. System.out.println(user);//没有id
  21. userService.add(user);
  22. System.out.println(user);//有id
  23. }
  24. @Test
  25. public void testList() throws Exception{
  26. //com.github.pagehelper.Page --->PageList(currentPage,pageSizs,totalRecords,totalpages,Data)
  27. Page<User> list = (Page) userService.queryPage(new UserQuery());
  28. System.out.println(list.getClass());
  29. System.out.println("总记录数:"+list.getTotal());
  30. System.out.println("总页数:"+list.getPages());
  31. System.out.println("当前页"+list.getPageNum());
  32. System.out.println("当前页条数:"+list.getPageSize()); //因为在业务层,只获取了每页两条数据
  33. for (User o : list) {
  34. System.out.println(o);
  35. }
  36. }
  37. }

以下是测试的结果:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,286人围观)

还没有评论,来说两句吧...

相关阅读