springboot2 +mybatis+druid

之前用注解shix实现了这个,但注解也有它的不足。在复杂的大项目中通常用的都是配置文件。

且在springboot2里面有好多坑,自己调了大半天终于调通了,所以记录一下,免得下次再犯。

本次用的是springboot2.0.3 + maven 3.2.2 +jdk1.8 

而且发现有时候版本的问题跟maven有很大的关系,同样的springboot2.X ,但maven的版本不一样,所需的一些jar的版本也不一定一样。

例如:若maven是3.3.9,

<!-- 分页插件 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.1.2</version>
		</dependency>
		<!-- alibaba的druid数据库连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.0</version>
		</dependency>

这个可以

若:maven是3.2.2.

<!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <!-- alibaba的druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

贴代码:

项目结构:

pom.xml

扫描二维码关注公众号,回复: 2472777 查看本文章
<?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.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mybatis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.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>
    </properties>

    <dependencies>

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

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</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>

        <!-- alibaba的druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

server:
  port: 8087

spring:
    datasource:
        name: test
        url: jdbc:mysql://127.0.0.1:3306/mydream
        username: root
        password: root
        # 使用druid数据源
        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:mapping/*/*.xml #这里是mapper的配置文件
  type-aliases-package: com.mydream.backstate.*.entity #这里是实体类的包

#pagehelper分页插件
pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

dao:

package com.mydream.backstate.sysuser.dao;

import com.mydream.backstate.sysuser.entity.SysUser;

public interface SysUserMapper {
    SysUser findByUsername(String username);
}

entity:

package com.mydream.backstate.sysuser.entity;

public class SysUser {
    private Long id;

    private String password;

    private String username;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }
}

service:

package com.mydream.backstate.sysuser.service;

import com.mydream.backstate.sysuser.entity.SysUser;

/**
 * Created by  lpw'ASUS on 2018/7/20.
 */
public interface SysUserService {
    SysUser findByUsername(String username);
}

serviceimpl:

package com.mydream.backstate.sysuser.service;

import com.mydream.backstate.sysuser.dao.SysUserMapper;
import com.mydream.backstate.sysuser.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Created by  lpw'ASUS on 2018/7/20.
 */
@Service
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;

    @Override
    public SysUser findByUsername(String username) {
        return sysUserMapper.findByUsername(username);
    }
}

controller:

package com.mydream.backstate.sysuser.controller;

import com.mydream.backstate.sysuser.entity.SysUser;
import com.mydream.backstate.sysuser.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by  lpw'ASUS on 2018/7/20.
 */
@Controller
@RequestMapping("/")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;

    @RequestMapping("test")
    @ResponseBody
    public SysUser test(@RequestParam String username){
        return sysUserService.findByUsername(username);
    }
}

SysUserMapper.xml

<?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.mydream.backstate.sysuser.dao.SysUserMapper">
    <resultMap id="BaseResultMap" type="com.mydream.backstate.sysuser.entity.SysUser" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="username" property="username" jdbcType="VARCHAR" />
    </resultMap>

    <sql id="BASE_TABLE">
        sys_user
    </sql>

    <sql id="BASE_COLUMN">
        id,password,username
    </sql>

    <select id="findByUsername" resultMap="BaseResultMap" parameterType="string">
        SELECT
          <include refid="BASE_COLUMN"/>
        FROM
          <include refid="BASE_TABLE"/>
        WHERE username = #{username}
    </select>
</mapper>

在使用的过程中我刚开始碰到,mapper类shan上面不加@Mapper,就会发现报zhao找不到的错误,之后查了发现,要么每个Mapper类都加这个,要么在启动类上面加

@MapperScan("com.mydream.backstate.*.dao")

例:

package com.mydream.backstate;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.mydream.backstate.*.dao")
public class MydreamApplication {

	public static void main(String[] args) {
		SpringApplication.run(MydreamApplication.class, args);
	}
}

猜你喜欢

转载自blog.csdn.net/m0_38044453/article/details/81132523
今日推荐