• 首页

  • 笑一笑

  • 相册

  • 文学

  • 日志

  • 关于页面
u f a n y
u f a n y

英杰

获取中...

11
13

一起学习Spring boot 2.1.X | 第五篇:Mybatis Druid 数据库(注解版)

发表于 2020-11-13 • 被 2,282 人看爆

运行展示

正题

Spring boot :2.1.5RELEASE ;数据库(Mysql、Oracle);Mybatis;阿里云的连接池 : Druid ;

步骤

1.POM依赖

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- Oracle -->
<!--<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
/dependency>-->

<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>

 

2.application.properties

#Mybatis+MySQL+Druid
#Mysql时区异常URL后添加serverTimezone=GMT%2B8/连接池:typr/初始化连接:initialSize/最大空闲数:maxActive/最小空闲数:minIdle/获取连接等待时间:maxWait/最小等待时间:minEvictableIdleTimeMillis/关闭后不自动提交:defaultAutoCommit
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
#spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

初始化大小,最小,最大

spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20

配置获取连接等待超时的时间

spring.datasource.maxWait=60000

配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

spring.datasource.timeBetweenEvictionRunsMillis=60000

配置一个连接在池中最小生存的时间,单位是毫秒

spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false

打开PSCache,并且指定每个连接上PSCache的大小

spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

spring.datasource.filters=stat,wall,log4j

通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

合并多个DruidDataSource的监控数据

#spring.datasource.useGlobalDataSourceStat=true

spring.datasource.defaultAutoCommit=false

 

3.其他文件生成

User.java

public class User {
public Integer uid;
public String uname;
public String upassword;

public Integer getUid() {
    return uid;
}

public void setUid(Integer uid) {
    this.uid = uid;
}

public String getUanme() {
    return uname;
}

public void setUanme(String uanme) {
    this.uname = uanme;
}

public String getUpassword() {
    return upassword;
}

public void setUpassword(String upassword) {
    this.upassword = upassword;
}

@Override
public String toString() {
    return "User{" +
            "uid=" + uid +
            ", uname='" + uname + '\'' +
            ", upassword='" + upassword + '\'' +
            '}';
}

}

UserDao.java

import com.spring.boot.bean.User;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface UserDao {

@Select("select * from user")
public List&lt;User&gt; AllUser();

@Update("&lt;script&gt; " + "update user" +
        "&lt;set&gt;"+  "&lt;if test='uname!=null'&gt;uname=#{uname},&lt;/if&gt;"+
        "&lt;if test='upassword!=null'&gt;upassword=#{upassword},&lt;/if&gt;"+
        "&lt;/set&gt;"+ "where uid=#{uid}"+
        " &lt;/script&gt; ")
public int Update(User user);

}

UserService.java

import com.spring.boot.bean.User;
import java.util.List;

public interface UserService {

public List&lt;User&gt; AllUser();

public int Update(User user);

}

 

UserImpl.java
主要是注解问题Service可以命名,主要还是看自己的日常使用

import com.spring.boot.bean.User;
import com.spring.boot.dao.UserDao;
import com.spring.boot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserImpl implements UserService {

@Autowired
private UserDao userDao;

@Override
public List&lt;User&gt; AllUser() {

    return userDao.AllUser();
}

@Override
public int Update(User user) {
    return userDao.Update(user);
}

}

UserController.java

 

import com.spring.boot.bean.User;
import com.spring.boot.service.impl.UserImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;

@RestController
public class UserController {

@Autowired
private  HttpServletRequest request;

@Autowired
private UserImpl userimpl;

 @RequestMapping("/api/login")
public String Login(User user) {

    HttpSession session = request.getSession();

    //存入Session
    //session.setAttribute("user", user);
    //单位为秒,设置为-1时不再失效
    //session.setMaxInactiveInterval(60 * 60 * 24 * 30);
    //注销登陆
    //request.getSession().removeAttribute("user");

    return userimpl.UserAll(user).toString();
}

}

 

注:userDao报红解决方法

 

注:启动类加入注解@MapperScan("路径)
小编这是Java web项目,@Controller注解是界面、@RestController是写接口

分享到:
详解Redis核心数据结构和高性能原理分析(一)
Kubernetes - Xshell连接虚拟机 & 搭建Kubernetes基础集群
  • 文章目录
  • 站点概览
英杰

帅哥英杰

QQ Email RSS
看爆 Top5
  • 使用 MHA 实现 MySQL 主从复制高可用 3,211次看爆
  • nginx反向代理配置去除前缀 2,959次看爆
  • 国产微服务网关-Soul(真香) 2,882次看爆
  • Kubernetes - Xshell连接虚拟机 & 搭建Kubernetes基础集群 2,663次看爆
  • 不把一切看得太重,生命才会更加洒脱 2,626次看爆

Copyright © 2025 英杰 · 冀ICP备19001756号-1

Proudly published with Halo · Theme by fyang · 站点地图