资讯专栏INFORMATION COLUMN

单手撸了个springboot+mybatis+druid

adie / 2507人阅读

摘要:配置想想,我们需要哪些数据库要用到,数据库连接池要用到桥接器要用到,因此要仓库点我去仓库中找到搜索这些加进去。

本文旨在用最通俗的语言讲述最枯燥的基本知识

最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走、什么有了springboot妈妈再也不担心我的编程了、什么BAT都喜欢的框架...听得作者那个心痒痒的,于是找了个时间,下载了个idea来玩一波springboot,对了...用springboot最好用idea,如果你还在用eclipse,删了吧。

在这里解释一下为什么是springboot+mybatis+druid,是因为作者认为但凡任何一个有灵魂的项目,都少不了数据库,作者不喜欢用JPA那种混SQL的语法,因此选了mybatis,而Druid是阿里系(真香~)的一种数据库连接池框架,在上一个项目作者用的屡试不爽,因此打算继续用,为啥屡试不爽?看文末吧。

文章提纲:

创建springboot工程

配置pom.xml

配置数据源

设置mybatis

hello world

设置Druid监控配置

1. 创建springboot工程

只要你有idea,创建一个springboot工程,就跟捏死一个蚂蚁一样简单,因为idea里深度集成了对springboot项目的支持,你直接不停的next到最后,它就会帮你创建出一个springboot工程。

首先打开idea->Create New project->选择项目类型:这里选择spring initializr,然后next。

创建项目,填写项目名称,注意:不要能驼峰写法,可以用中横线,填写完毕后继续next。

选择依赖,所谓依赖就是你在设计这个项目的框架时,分析这个项目需要用到哪些jar或者组件,比如缓存要用到Redis,数据库要用到MySQL等...这里因为演示项目,就不选择太多其它乱七八糟的依赖了。

选好依赖之后,又是一路狂点next,直到最后finish一下,一个springboot项目就创建好了。

2. 配置pom.xml

想想,我们需要哪些jar?
数据库要用到mybatis,数据库连接池要用到Druid、MySQL桥接器要用到mysql-connector,因此要maven仓库(点我去仓库)中找到搜索这些pom加进去。注意,mybatis要用mybatis-spring-boot-starter。

       
        
            mysql
            mysql-connector-java
            5.1.6
        
        
        
            com.alibaba
            druid
            1.1.10
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        

把上面这些pom放到pom.xml的dependencies中

细心的老铁会发现,MySQL的version里的内容是红色的,这是什么原因呢?
这是因为我们引入pom时,这些版本的jar在本地maven仓库还没有,而Druid的pom里的version没有显示红色,是因为之前的项目用到了这个版本的Druid,已经被下载到本地Maven仓库里了。
因此我们需要把本地没有的jar下载到本地仓库,右键pom.xml弹出菜单,选择Maven,弹出菜单选择reimport

Reimport过程中再idea底部会有进度条显示,等进度条消失,在观察pom.xml,红色已经消失,说明依赖已经装备完成。

配置数据源

接下来就是要多springboot项目做一个全局配置,默认会在src->main->resource目录下生产空白文件application.properties,作者喜欢用yml因此直接改名成yml即可。
首先是数据源的配置,下面是一份数据源的配置,每个参数的解释都写了注释,因此读者可以直接复制一下内容进去,只需要改一下url、username、password

spring:
  #profiles: dev
  messages:
    basename: i18n/Messages,i18n/Pages
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource    # 配置当前要使用的数据源的操作类型
    driver-class-name: org.gjt.mm.mysql.Driver        # 配置MySQL的驱动程序类
    url: jdbc:mysql://localhost:3306/wkt_stat           # 数据库连接地址
    username: root                                  # 数据库用户名
    password: root                            # 数据库连接密码
    dbcp2:                                          # 进行数据库连接池的配置
      min-idle: 5                                   # 数据库连接池的最小维持连接数
      initial-size: 5                               # 初始化提供的连接数
      max-total: 5                                  # 最大的连接数
      max-wait-millis: 200                          # 等待连接获取的最大超时时间
4. 设置mybatis

继续在application.yml中设置mybatis,mybatis的配置也简单,
主要是为了设置mybatis的配置文件已经mapper文件所在。

首先在resource目录下创建一个mybatis-config.xml文件,文件内容为:




    
    

在main包中的根目录下创建一个存放mapper实体的资源文件,在resource文件下创建一个文件夹mapper用来存放mapper的xml文件。

配置好资源文件路径之后,就可以在application.yml中加入mybatis的配置了,如下是一个mybatis的配置内容:

#mybatis的mapper配置文件
mybatis:
  config-location: classpath:mybatis-config.xml  # mybatis配置文件所在路径
  #mapper-locations: classpath:mapper/*.xml   # 所有的mapper映射文件
  type-aliases-package: com.becl.dao.mapper # 定义所有操作类的别名所在包
debug: true

最终application.yml的内容如下图:

此时需要有一个数据库表来做测试,我们在数据库创建一个表,并且插入一条数据:

CREATE TABLE Memeber (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`name`  varchar(255) NULL ,
PRIMARY KEY (`id`)
);

INSERT INTO memeber VALUES(1,"jas")

在mapper包中创建Memeber的mapper接口:

public interface MemeberMapper {
    /**
     * 根据ID获取记录
     * @param id
     * @return
     */
    public Map findObjectById(Integer id);
}

在resource中的mapper文件夹创建memberMapper.xml,并且在mapper中增加一个findObjectById的SQL查询语句。





#根据ID查询记录

5. hello world

走到这一步,基本上已经是大功告成了,我们来写一个测试类试试,在根目录创建一个controller的包,在包中创建一个Java类,如下:

@Controller
@RequestMapping("/test")
public class TestController {
    @Resource
    private MemeberMapper memeberMapper=null;
    
    @RequestMapping("/one")
    @ResponseBody
    public Map testdb(){
        return  memeberMapper.findObjectById(1);
    }
}

创建完之后,我们运行项目,找到启动类MybatisAndDruidApplication右键run,发现报错,提示没有扫描到mapper包,为什么呢?那是mapper需要手动在启动类中加入:

@MapperScan("com.example.mybatisanddruid.mapper")

这样启动类就变成:

@SpringBootApplication
@MapperScan("com.example.mybatisanddruid.mapper")
public class MybatisAndDruidApplication {

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

再次运行,没有报错,在浏览器输入:http://localhost:8888/test/one
输出了ID为1的记录:

{"name":"jas","id":1}

由此可见,springboot-mybatis已经搭建成功,此时有人会问,那Druid呢?

设置Druid监控配置

druid的使用需要做一些配置,现在我们来在根目录下创建一个包config,在config包中间创建一个叫做DruidConfig.java,并且在里写入下面的内容:

@Configuration
public class DruidConfig {
    @Bean
    public ServletRegistrationBean druidServlet() { // 主要实现WEB监控的配置处理
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 进行druid监控的配置处理操作
        servletRegistrationBean.addInitParameter("allow",
                "127.0.0.1,192.168.1.159"); // 白名单
        servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名单
        servletRegistrationBean.addInitParameter("loginUsername", "stat"); // 用户名
        servletRegistrationBean.addInitParameter("loginPassword", "Wkt_sTat_1031"); // 密码
        servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置数据源
        return servletRegistrationBean ;
    }
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ;
        filterRegistrationBean.setFilter(new WebStatFilter());

        filterRegistrationBean.addUrlPatterns("/*"); // 所有请求进行监控处理
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
        return filterRegistrationBean ;
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
    
}

配置中的内容就不一一细讲, 有兴趣的直接百度一下druid就出来很多答案了,现在重新运行一下项目,运行成功之后,在浏览器中输入:http://localhost:8888/druid
这时候,druid监控平台就出现了

此时我们输入在DruidConfig中设置的loginUsername和loginPassword点击登录,一个完整的druid监控管理平台就呈现在我们啦~

Druid非常强大,在这里你可以查看SQL的执行情况、慢SQL、API请求情况等,根据这些可以做一些性能的调优,至于详细的用法,就靠大家自行学习啦~

如果有老铁需要项目源码,请加我微信:sisi-ceo。

觉得本文对你有帮助?请分享给更多人
关注「编程无界」,提升装逼技能

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71972.html

相关文章

  • 单手了个springboot+mybatis+druid

    摘要:配置想想,我们需要哪些数据库要用到,数据库连接池要用到桥接器要用到,因此要仓库点我去仓库中找到搜索这些加进去。 本文旨在用最通俗的语言讲述最枯燥的基本知识 最近身边的程序员掀起了学习springboot的热潮,说什么学会了springboot在大街上就可以横着走、什么有了springboot妈妈再也不担心我的编程了、什么BAT都喜欢的框架...听得作者那个心痒痒的,于是找了个时间,下载...

    garfileo 评论0 收藏0
  • SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+Pa

    摘要:当禁用时,所有关联对象都会即时加载。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。需要适合的驱动。系统默认值是设置字段和类是否支持驼峰命名的属性。   上篇文章我们介绍了SpringBoot和MyBatis的整合,可以说非常简单快捷的就搭建了一个web项目,但是在一个真正的企业级项目中,可能我们还需要更多的更加完善的框架才能开始真正的开发,比如连接池、分...

    hatlonely 评论0 收藏0
  • springboot系列】springboot整合独立模块Druid + mybatis-plus

    摘要:申请连接时执行检测连接是否有效,做了这个配置会降低性能。作者在版本中使用,通过监控界面发现有缓存命中率记录,该应该是支持。允许和不允许单条语句返回多个数据集取决于驱动需求使用列标签代替列名称。需要驱动器支持。将自动映射所有复杂的结果。 项目github地址:https://github.com/5-Ason/aso... 具体可看 ./db/db-mysql 模块 本文主要实现的是对...

    RobinTang 评论0 收藏0
  • springboot系列】springboot整合独立模块Druid + mybatis-plus

    摘要:申请连接时执行检测连接是否有效,做了这个配置会降低性能。作者在版本中使用,通过监控界面发现有缓存命中率记录,该应该是支持。允许和不允许单条语句返回多个数据集取决于驱动需求使用列标签代替列名称。需要驱动器支持。将自动映射所有复杂的结果。 项目github地址:https://github.com/5-Ason/aso... 具体可看 ./db/db-mysql 模块 本文主要实现的是对...

    googollee 评论0 收藏0
  • SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源

    这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源。同时可实现读写分离。 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建数据库表 在mysql中创建student库并执行下面查询创建student表 -- ---------------------------- -- Table structure for stud...

    AZmake 评论0 收藏0

发表评论

0条评论

adie

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<