springboot-springmvc-mybatis整合

真的超级简单。。。。mybatis只需要两行代码配置文件就ok了,对了,有个坑,mybatis的版本问题,高版本的需要在接口的dao层需要加上@mapper注解,不然注入失败。

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>

    <groupId>com.qytx</groupId>
    <artifactId>mama-bike</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mama-bike</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--阿里巴巴数据库连接池-->
        <druid.version>1.0.9</druid.version>
        <!-- 导入Mysql数据库链接jar包 -->
        <jdbc.version>5.1.30</jdbc.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${jdbc.version}</version>
        </dependency>


        <!--mybatis工具类-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
            <scope>test</scope>
        </dependency>


        <!--添加调试工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <build>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                   <fork>true</fork>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

application.yml

server:
  port: 8080
spring:
    datasource:
        name: test
        url: jdbc:mysql://localhost:3306/mama-bike?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
        username: root
        password: root
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        filters: stat
        maxActive: 20
        initialSize: 1
        maxWait: 60000
        minIdle: 1
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: select 'x'
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxOpenPreparedStatements: 20

mybatis:
  mapper-locations: classpath:com/coder520/mamabike/**/**.xml
  type-aliases-package: classpath:com.coder520.mamabike.**.entity
logging:
  config: classpath:logback.xml

logback.xml

坑超级多,特别是jar、包问题,根本不需要引其他jar包,因为boot里面集成的有。。。。麻痹,浪费我两个小时!!!!!

还有logger日志类引入问题,idea麻痹不提示,卧槽,说好的智能提示呢,只有等我把全部的写完才提示不报错,擦
别引错类!!!!!

import org.slf4j.LoggerFactory;
Logger logger=LoggerFactory.getLogger(UserController.class);
logger.error("出错了------");
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 意思是这个项目下的logs目录,加/代表这个盘符下,比如会在d:盘下创建这个log目录,亲测-->
    <property name="LOG_HOME" value="logs/mamabike/" />

    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{H:mm} %-5level [%logger{16}] %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="normalLog"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/web.normal.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--日志文件最大的大小-->
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n
            </pattern>
        </layout>

        <!--意思是如果是错误级别的过滤掉,因为这个是正常的日志文件,下面那个反之-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
    </appender>
    <appender name="errorLog"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/web.error.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n
            </pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--这个的意思就是说com.coder520.mamabike这个包下面的所有类都给我输出到上面设置的路径中去,
    当然还可以自定义模块,比如说用户模块的输出到这个文件夹下,其他的输出到另外的文件夹下-->
    <logger name="com.coder520.mamabike" level="debug" >
        <appender-ref ref="normalLog" />
        <appender-ref ref="errorLog" />
    </logger>

    <!-- 日志输出级别   这个意思是打印的日志文件的级别是info级别。 -->
    <root level="info">
        <appender-ref ref="Console" />
    </root>
</configuration>

替换springboot内置的json解析包,因为springboot内置的是jackson.jar 不好使,所以用阿里巴巴的fastjson。 他们两个最大的区别就是一个类,如果某个字段为null,fastjson不给你返回,jsckson给你返回这个字段,值为null。

一般这样替换
在主main函数中写一个方法,注解@Bean 然后spring就会扫描到。然后就会把这个返回的类给替换掉!!!!

package com.coder520.mamabike;

import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.http.converter.HttpMessageConverter;

@SpringBootApplication
@ComponentScan(basePackages={"com.coder520.mamabike"})
public class MamaBikeApplication {

    public static void main(String[] args) {
        SpringApplication.run(MamaBikeApplication.class, args);
    }
    @Bean
    public HttpMessageConverters fastJsonMessageConverter(){
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        HttpMessageConverter<?> httpMessageConverters=fastJsonHttpMessageConverter;
        return new HttpMessageConverters(httpMessageConverters);
    }
}

还有一个提高效率的功能,省去实体类的getset方法和每个类需要new一个日志工厂,全部注解就可以

需要加上一个依赖和idea需要下载一个插件Lombok插件。@data注解用在实体类上,@slf4j用在类上

 <!--加速开发的工具,可以省略getset和日志类,只需要注解就可以-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>



package com.coder520.mamabike.user.controller;

import ch.qos.logback.classic.selector.servlet.LoggerContextFilter;
import com.coder520.mamabike.user.dao.UserMapper;
import com.coder520.mamabike.user.entity.User;
import com.coder520.mamabike.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Administrator on 2018/2/14.
 */
@RestController
@RequestMapping("user")
@Slf4j
public class UserController {


    @Autowired
    UserService userService;
    @RequestMapping("/list")
    public User hello(){
        User user = userService.getUser(10L);
        try {
            user.getMobile().lastIndexOf(1);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("出错了------");
        }
        return user;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

发疯的man

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

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

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

打赏作者

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

抵扣说明:

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

余额充值