[1]pom文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <!--[1]工程继承spring-boot-starter-parent -->
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.3.5.RELEASE</version>
  10. </parent>
  11. <groupId>com.st</groupId>
  12. <artifactId>mis-springboot</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <properties>
  15. <java.version>1.8</java.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <!-- mybatis的场景启动器 -->
  23. <dependency>
  24. <groupId>org.mybatis.spring.boot</groupId>
  25. <artifactId>mybatis-spring-boot-starter</artifactId>
  26. <version>2.1.3</version>
  27. </dependency>
  28. <!-- 测试的场景启动器 -->
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-test</artifactId>
  32. <scope>test</scope>
  33. </dependency>
  34. <!--thymeleaf场景启动器 -->
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  38. </dependency>
  39. <!-- druid连接池 -->
  40. <dependency>
  41. <groupId>com.alibaba</groupId>
  42. <artifactId>druid</artifactId>
  43. <version>1.1.10</version>
  44. </dependency>
  45. <!-- mysql驱动 -->
  46. <dependency>
  47. <groupId>mysql</groupId>
  48. <artifactId>mysql-connector-java</artifactId>
  49. <version>5.1.38</version>
  50. <exclusions>
  51. <exclusion>
  52. <groupId>com.google.protobuf</groupId>
  53. <artifactId>protobuf-java</artifactId>
  54. </exclusion>
  55. </exclusions>
  56. </dependency>
  57. </dependencies>
  58. <build>
  59. <!-- 资源文件的位置 -->
  60. <resources>
  61. <resource>
  62. <directory>src/main/java</directory>
  63. <includes>
  64. <include>**/*.xml</include>
  65. <include>**/*.properties</include>
  66. <include>**/*.yml</include>
  67. </includes>
  68. <filtering>true</filtering>
  69. </resource>
  70. <resource>
  71. <directory>src/main/resources/</directory>
  72. <includes>
  73. <include>**/*.xml</include>
  74. <include>**/*.properties</include>
  75. <include>**/*.yml</include>
  76. <include>**/*.html</include>
  77. </includes>
  78. <filtering>true</filtering>
  79. </resource>
  80. </resources>
  81. <plugins>
  82. <plugin>
  83. <groupId>org.springframework.boot</groupId>
  84. <artifactId>spring-boot-maven-plugin</artifactId>
  85. </plugin>
  86. </plugins>
  87. </build>
  88. </project>

[2]快速生成pojo,mapper,service

[3]添加注解

Mapper接口上添加@Mapper注解

Service实现类上添加@Service注解

Config类上面添加

/**
 * @author:Cherry
 * @createTime:2021-03-30
 */
@Configuration
public class DruidConfig {
    @Bean
    @ConfigurationProperties("druid")
    public DataSource druid(){
        DataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

[4]主配置文件添加druid配置

#druid配置#
druid:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://192.168.2.181:3306/mis?useUnicode=true&characterEncoding=UTF-8
  username: root
  password: root

[5]Controller类

/**
 * @author:Cherry
 * @createTime:2021-03-30
 */
@Controller
public class QuestionController {

    @Autowired
    private QuestionService questionService;

    @RequestMapping("/question/{id}")
    @ResponseBody
    public Question queryById(@PathVariable Long id){
        return questionService.queryById(id);
    }

    @RequestMapping("/questionList")
    public String queryAllByLimit(Model model){
        List<Question> questions = questionService.queryAllByLimit(0, 10);
        model.addAttribute("questions",questions);
        return "question-list";
    }
}

[6]事务的配置

1.在主应用类上添加注解:

 @EnableTransactionManagement(proxyTargetClass = false)

@EnableTransactionManagement:开启事务管理
属性proxyTargetClass配置代理方式,默认为false,spring会自动选择代理方式,如果配置为true则表示强制使用CGLib代理方式.

@SpringBootApplication
@EnableTransactionManagement(proxyTargetClass = false)
public class MisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MisApplication.class, args);
    }
}

2.在service接口或者类添加配置

@Transactional(isolation = Isolation.DEFAULT,
        propagation = Propagation.REQUIRED,
        timeout = -1)
public interface QuestionService {

    /**
     * 通过ID查询单条数据
     *
     * @param questionid 主键
     * @return 实例对象
     */
    @Transactional(isolation = Isolation.DEFAULT,
        propagation = Propagation.REQUIRED,
        timeout = -1)
    Question queryById(Long questionid);
}

注:如果方法上面添加配置,那么方法上的配置会覆盖接口上放的配置
如果在实现类上面添加配置,在类上方的注解会覆盖接口中的事务注解配置