- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章解决springboot整合druid遇到的坑由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
<?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 https://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.test</groupId> <artifactId>page</artifactId> <version>0.0.1-SNAPSHOT</version> <name>page</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <druid.version>1.1.10</druid.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </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>2.0.1</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build></project>
server: port: 8001spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: mysql: name: mysql url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 initialSize: 5 minIdle: 5 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000# oracle:# name: oracle# url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL# username: zs# password: 123456# initialSize: 5# minIdle: 5# maxActive: 20# maxWait: 60000mybatis: mapper-locations: - classpath*:mapper/*.xml
配置数据源时有个问题:username,password,url,driver-class-name既可以配在spring.datasource下面,也可以配置在spring.datasource.druid下面.
如果直接配在spring.datasource下面,当配置多个数据源时,不方便指定前缀.
如果配置在spring.datasource.druid下面,需要在配置类(@Configuration)中获取相应的值。如果不配置会报找不到url,driver-class-name的错.
package com.test.page.config;import com.alibaba.druid.filter.stat.StatFilter;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import com.alibaba.druid.wall.WallConfig;import com.alibaba.druid.wall.WallFilter;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;@Configuration@MapperScan(sqlSessionTemplateRef = "mysqlSqlSessionTemplate",basePackages = "com.test.page.dao")public class DruidDataSourceConfiguration { private static final String PRE="spring.datasource.druid.mysql."; @Value("${"+PRE+"url}") private String url; @Value("${"+PRE+"driver-class-name}") private String driverClassName; @Value("${"+PRE+"username}") private String username; @Value("${"+PRE+"password}") private String password; @Value("${"+PRE+"initialSize}") private int initialSize; @Value("${"+PRE+"maxActive}") private int maxActive; @Value("${"+PRE+"minIdle}") private int minIdle; @Value("${"+PRE+"maxWait}") private long maxWait; @Bean("mysqlDataSource") public DruidDataSource mysqlDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setPassword(password); druidDataSource.setInitialSize(initialSize); druidDataSource.setMinIdle(minIdle); druidDataSource.setMaxActive(maxActive); druidDataSource.setMaxWait(maxWait); return druidDataSource; } @Bean("mysqlSqlSessionFactory") public SqlSessionFactory mysqlSqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(mysqlDataSource()); //使用xml的方式,如果不配置会一直找不到sql //默认使用注解的方式 sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/*.xml")); return sqlSessionFactoryBean.getObject(); } @Bean("mysqlSqlSessionTemplate") public SqlSessionTemplate mysqlSqlSessionTemplate()throws Exception{ return new SqlSessionTemplate(mysqlSqlSessionFactory()); } @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); //控制台管理用户,加入下面2行 进入druid后台就需要登录 //servletRegistrationBean.addInitParameter("loginUsername", "admin"); //servletRegistrationBean.addInitParameter("loginPassword", "admin"); return servletRegistrationBean; } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); filterRegistrationBean.addInitParameter("profileEnable", "true"); return filterRegistrationBean; } @Bean public StatFilter statFilter(){ StatFilter statFilter = new StatFilter(); statFilter.setLogSlowSql(true); //slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。 statFilter.setMergeSql(true); //SQL合并配置 statFilter.setSlowSqlMillis(1000);//slowSqlMillis的缺省值为3000,也就是3秒。 return statFilter; } @Bean public WallFilter wallFilter(){ WallFilter wallFilter = new WallFilter(); //允许执行多条SQL WallConfig config = new WallConfig(); config.setMultiStatementAllow(true); wallFilter.setConfig(config); return wallFilter; }}
这里有个坑:找不到xml中的sql 。
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.test.page.dao.UserDao.findById 。
出现上面问题的原因有很多.
例如:
1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应; 。
2:检查xml的namespace是否和xml文件的package名称一一对应; 。
3:检查方法名称是否对应; 。
如果不是上面这几种问题:
在配置类中添加setMapperLocations(),并且指定xml的位置 。
@Bean("mysqlSqlSessionFactory") public SqlSessionFactory mysqlSqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(mysqlDataSource()); //使用xml的方式,如果不配置会一直找不到sql //默认使用注解的方式 sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/*.xml")); return sqlSessionFactoryBean.getObject(); }
springboot 版本号为1.5.12和选择相对应的工具(如版本不一致会导致运行错误) 。
pom.xml中添加 。
<!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency>
spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/dept?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource# 数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,"wall"用于防火墙 filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
。
3.1 建立dataSourcesConfig类 。
package cn.vp.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.util.Arrays;import java.util.HashMap;import java.util.Map;@Configurationpublic class DataSourcesConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource getDataSources() { return new DruidDataSource(); } /** * 配置druid后台管理的servlet * * @return */ @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); Map<String, String> initParams = new HashMap<>(); initParams.put("loginUsername", "admin"); initParams.put("loginPassword", "admin"); initParams.put("allow", "");//默认就是允许所有访问 initParams.put("deny", "192.168.15.21");//禁止访问的ip bean.setInitParameters(initParams); return bean; } /** * 配置druid后台管理的filter * * @return */ @Bean public FilterRegistrationBean druidFilter() { FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); Map<String, String> initParams = new HashMap<>(); //设置不拦截的路径 *.cs *.js /druid/* initParams.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParams); //设置filter拦截 那些请求 bean.setUrlPatterns(Arrays.asList("/*")); return bean; }}
3.2 建立MybatisConfig类 。
package cn.vp.config;import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MyBatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer() { return new ConfigurationCustomizer() { @Override public void customize(org.apache.ibatis.session.Configuration configuration) { //-自动使用驼峰命名属性映射字段 userId user_id configuration.setMapUnderscoreToCamelCase(true); //使用列别名替换列名 select user as User configuration.setUseColumnLabel(true); } }; }}
package cn.vp.dao;import cn.vp.entity.Department;import org.apache.ibatis.annotations.*;@Mapperpublic interface DepartmentDao { @Insert("INSERT INTO `Department` (`departmentName`) VALUES (#{departmentName})") public int addDepartment(Department department); @Delete("DELETE FROM department where id=#{id}") public int deleteById(Integer id); @Update("UPDATE `Department` SET `departmentName`=#{departmentName} WHERE (`id`=#{id})") public int updateDepartment(Department department); @Select("SELECT * from department where id=#{id}") public Department queryById(@Param("id") Integer id);}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/weixin_43845184/article/details/103179659 。
最后此篇关于解决springboot整合druid遇到的坑的文章就讲到这里了,如果你想了解更多关于解决springboot整合druid遇到的坑的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
前言 这个东西有啥用,好玩? 确实, 好玩归好玩,其实很有使用场景。 可以自己选则一些业务节点触发这个机器人助手的消息推送; 简单举例: 有人给你的系统留下反馈意见了,推送到运营群去; 2.项目部署成
1. JWT 简介 JSON Web Token(JWT) 是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信
我的页面上有多个 ajax 调用,我想将它们合并为一个函数。 目前我在几个地方都有这种类型的功能: function AjaxCallOne () { //do something $.ajax(
我的 Facebook 集成基本上可以在我的应用程序中运行:出现 Facebook 对话框,用户可以选择“允许”或“不允许”。但是,我不明白 API 是如何工作的!我有一个使用此代码的 Activit
我必须将文件夹结构从我的应用程序共享到 OneDrive。 我已经检查了一个驱动器的 sdk,但在那个 sdk 中只能共享文件而不是文件夹,并且没有在该 sdk 中创建文件夹的选项 https://g
我是支付网关集成方面的新手。我必须在我的项目 (CORE PHP) 中集成 CCAvenue 支付网关集成。但是我不知道如何为开发人员测试创建商户帐户,如何获取商户 key 等。我已经进行了研发,但是
我正在尝试将“社交选项”集成到我的应用程序中。 我有 iOS6,但我的想法是有一个适用于 iOS5 的应用程序。使用 Twitter 框架非常简单,并且可以在 r.0 版本和 6.0 版本的设备上运行
我正在尝试将 flurryAds 集成到我的 iPhone 应用程序中,但我无法做到这一点。我导入名为 的 .h 文件 #import "Flurry.h" #import "FlurryAds.h"
我正在尝试在我的网站中实现类似 facebook 的按钮和评论,但我在 IE7 中遇到了评论框问题。 COMMENT USING 下拉框不知何故没有显示其他可用选项。这是我用来实现它的代码片段:
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve th
我正在使用 SOAP API 进行 PayPal 集成(Express Checkout)。在 DoExpressCheckout 调用后,我调用 GetExpressCheckoutDetails。
我正在尝试将 paypal 作为支付网关之一集成到我的应用程序中,但在我点击支付按钮后它会返回以下错误。 错误 java.lang.RuntimeException:无法使用 Intent { cmp
我目前正在尝试将 paypal 结账与我们的在线商店集成。我们正在针对 Sandbox 进行测试。除了 IPN(即时付款通知)之外的所有内容都有效。 我们阅读了很多有关 Paypal 更改其安全模型的
我正在开发一个 android 应用程序,我想在其中集成 facebook 之类的。我正在浏览链接 http://developers.facebook.com/docs/guides/mobile/
所以我正在尝试构建一个集成了 FitBit 的 iOS 应用程序 (Swift 2)。 一旦用户打开“步行”页面,用户应该能够看到他每天的步数。 理想情况下,我们不希望每个用户都注册到 FitBit。
我是集成投递箱的新手,但我不太确定如何生成调用以获取请求 token secret 。 https://www.dropbox.com/developers/reference/api#request
我已经成功集成了 PayPal。一切正常。但我希望我的表格在成功付款后重定向到我的网站。另一个问题:如何从 PayPal 得到回应?这是我的 Paypal 表格。谢谢。 `
我在我的 Android 应用程序中集成了 Paypal 。我有一个主要 Activity - 和关于 Activity ,我在其中显示 Paypal 按钮。关于从主 Activity 访问的 Act
前言: 小编引入的图片和文字描述都是来自于尚硅谷的视频讲解,在此感谢尚硅谷的老师,同时也结合 seata文档官方文档进行整合 项目地址(gitee): https://gitee.com/qine
目录 1. demo project 1.1 接口准备 1.2 配置准备 2. docker 开启远程连接
我是一名优秀的程序员,十分优秀!