zoukankan      html  css  js  c++  java
  • SpringBoot 整合 MyBatis

    使用mapper SQL映射文件和注解的方式

    非注解版

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.garcon</groupId>
        <artifactId>hello-spring-boot-mybatis</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>hello-spring-boot-mybatis</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <mysql.version>5.1.38</mysql.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.12</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.18</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
    

    application.yml配置文件

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: garcon
        driver-class-name: com.mysql.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        druid: #数据源
          initial-size: 8
          min-idle: 1
          max-active: 20
          max-wait: 60000
          time-between-eviction-runsMillis: 60000
          min-evictable-idle-timeMillis: 300000
          validation-query: select 'x' FROM DUAL
          test-while-idle: true
          test-on-borrow: false
          test-on-return: false
          pool-prepared-statements: true
          max-open-prepared-statements: 20
          max-pool-prepared-statement-per-connection-size: 20
          filters: stat
          connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          use-global-data-source-stat: true
    
    mybatis:
      mapper-locations: classpath:mapper/*.xml
      type-aliases-package: com.garcon.hellospringbootmybatis.domain
    
    

    配置Druid的监控

    @Configuration
    public class DruidConfig {
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid(){
           return  new DruidDataSource();
        }
    
        //配置Druid的监控
        //1、配置一个管理后台的Servlet
        @Bean
        public ServletRegistrationBean statViewServlet(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            Map<String,String> initParams = new HashMap<>();
    
            initParams.put("loginUsername","admin");
            initParams.put("loginPassword","123456");
            initParams.put("allow","");//默认就是允许所有访问
            initParams.put("deny","192.168.15.21");
    
            bean.setInitParameters(initParams);
            return bean;
        }
    
    
        //2、配置一个web监控的filter
        @Bean
        public FilterRegistrationBean webStatFilter(){
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
    
            Map<String,String> initParams = new HashMap<>();
            initParams.put("exclusions","*.js,*.css,/druid/*");
    
            bean.setInitParameters(initParams);
    
            bean.setUrlPatterns(Arrays.asList("/*"));
    
            return  bean;
        }
    }
    

    SpringBoot的启动类上需要扫描mapper接口所在的包

    @MapperScan("com.garcon.hellospringbootmybatis.mapper")
    @SpringBootApplication
    public class HelloSpringBootMybatisApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(HelloSpringBootMybatisApplication.class, args);
        }
    }
    

    mapper接口上可以不使用@Mapper注解

    public interface UserMapper {
    
        int insert(User user);
    }
    

    mapper配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.garcon.hellospringbootmybatis.mapper.UserMapper">
        <insert id="insert">
            insert into `user` values(#{id},#{username},#{password},#{email})
        </insert>
    </mapper>
    

    注解版

    注解版的application.yml中不需要扫描实体类和mapper配置文件 , 去除以下配置

    mybatis:
      mapper-locations: classpath:mapper/*.xml
      type-aliases-package: com.garcon.hellospringbootmybatis.domain
    

    只需要一个Mapper接口

    public interface UserMapper {
    
        @Insert("insert into user values(#{id},#{username},#{password},#{email})")
        int insert(User user);
    }
    
  • 相关阅读:
    面向对象(二)
    关于CURL的初步认识
    Mysql数据库进阶之(分表分库,主从分离)
    解决mysql:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
    git的那些事
    今天我们来聊聊svn的使用
    基于CentOS6.8版本配置真实域名的方法
    WDCP v3 安装
    Ubuntu无法ssh远程连接问题 (转)
    Linux运维入门到高级全套系列PDF
  • 原文地址:https://www.cnblogs.com/xiejinchi/p/13141301.html
Copyright © 2011-2022 走看看