文档章节

面向解决问题的java编程,spring boot,mybatis generator和坑-1starter

wphmoon
 wphmoon
发布于 05/23 14:28
字数 1369
阅读 7
收藏 0

1、start一个spring boot项目

第一课我们也不能免俗,要从starter开始,spring boot的起始项目脚手架可以从spring boot官方starter生成地址开始:https://start.spring.io/

    这张图列出了一个spring boot项目的几个基本信息,我们大略的说一下:

     maven是用来干嘛的呢,它解决了什么问题?是的,我们用的任何技术都是为了解决问题的,在java application的上古时代,我们的项目都是要把依赖的jar包包含在工程项目中的,所以一个项目会变的很大,哪怕你的项目改动很小,但一个完整的项目都需要带上这一堆jar包才能的拷贝给你的同事,一个哪怕几十K 源码的项目,要给到别人,都需要几十M,这是对网络传输带宽的巨大浪费。而且jar包之间会有各种依赖关系,所谓的jar hell在那个年代可以名副其实的噩梦,不同的jar引用不同版本的依赖jar,总有一款版本冲突搞死你,所以maven出现了,它统一管理jar和它的依赖关系,另外,提供公用的jar下载地址,称为maven repository,这样项目之间的传递就不需要带上jar包了,只需要把代码和配置文件传过去就可以了,项目体积大幅缩小。当然,maven还为各种项目自己的jar包提供了私有repository,还可以打包项目,运行项目等等等等,它可以解决很多工程上的管理部署问题,所以它的存在就变得很有必要了。有空我们再讲maven,我觉得maven的坑也是陨石级别的,又多有深。

    这两样东西仍然是和maven相关的,group的本意是代表公司组织的名称,但因为很多项目本身的package都是com.XXX形式,本身就代表了公司组织,所以我们一般都变成了包名的开始部分。Artifact可以认为是Maven构建的项目名,所以group和artifact的组合一般就成了包名的共通部分。

    spring boot的便利之处就在这里,我们引入我们需要的工具,框架的时候,不需要一个一个的jar包引入,而是可以整体引入,它自动会引入依赖包。点击

就会下载一个基础的项目了。

2、看看项目的结构

这个截图我用的是eclipse,但结构是典型的maven项目的结构。

  • src/main/java存放代码
  • src/main/resource下面存放配置文件、静态文件(static)和模板文件(templates),templates并不是maven的默认创建的目录,而是spring boot自行创建的,后面如果我们用thymeleaf的话,会把模板文件放在templates。
  • scr/test/java就是放测试代码的地方
  • target是我们的代码编译后的class文件和打包后的jar包、war包生成的地方
  • 最外面的是pom.xml文件,就是maven的配置啦(请忽略上面的红点,这是我eclipse的问题)

    现在,我们需要做的第一件事就是运行src/main/java下面的Lesson1Application,把项目跑起来。

3、坑

    其实如果你直接运行是跑不起来的,报错信息如下:

    

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-05-23 12:39:03.599 ERROR 19220 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

原因是我们虽然还没有用到数据库,但我们在pom.xml里面引入了mybatis:

        <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.1</version>
		</dependency>

只要用到了mybatis-spring-boot-starter,哪怕还没有任何访问数据库的动作,但应用也会去找数据库的配置,如果没找到,就会报错,解决的办法就是把数据库的配置在application.properties里面加上:

spring.datasource.driver=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/ry?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root

但其实很不幸,还是可能报错,因为我虽然引入了配置,但我用的mysql本身的依赖包并没有:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-05-23 13:34:18.286 ERROR 14588 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

    Property: driverclassname
    Value: com.mysql.cj.jdbc.Driver
    Origin: "driverClassName" from property source "source"
    Reason: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

Action:

Update your application's configuration

我们只能再次打开pom.xml,引入mysql的jdbc driver依赖包:

        <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

或者在开始的start.spring.io页面,就直接把mysql的jdbc driver 包加上,效果是一样的

这下再运行Lesson1Application,就不会再有问题了。

虽然现在没有问题了,但数据库链接的问题其实还有各种坑等着我们,后面我们讲多数据源配置的时候,再跳一次坑,继续讲。

© 著作权归作者所有

wphmoon
粉丝 3
博文 20
码字总数 33435
作品 0
广州
高级程序员
私信 提问
Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 0. 基础知识 通用Mapper一般配置MyBatis, MBG插件使用 个人实践证明,通用Mapper配合其特定的MBG插件不如直接使用官方MBG插件方便 1. POM依赖配置 2. 通用Mappe...

OSC_fly
2018/07/17
0
0
Spring Boot 整合MyBatis

通过一个小例子来实现Spring Boot 与MyBatis的整合。 加入maven依赖 Spring Boot官方提供的starter是这样的:spring-boot-starter-而其他第三方提供的starter是这样的:-spring-boot-starte...

流小文
2017/04/17
0
0
Spring Boot学习笔记

多模块开发 [SpringBoot学习]-IDEA创建Gradle多Module结构的SpringBoot项目 RabbitMQ RabbitMQ 安装 linux安装RabbitMQ详细教程 Ubuntu 16.04 RabbitMq 安装与运行(安装篇) ubantu安装...

OSC_fly
2018/07/26
0
0
Spring boot项目集成Sharding Jdbc

环境 jdk:1.8 framework: spring boot, sharding jdbc database: MySQL 搭建步骤 在pom 中加入sharding 依赖 将原来的 spring DataSource 注释掉,加入 sharding 的配置 注: 这个配置只...

52iSilence7
02/22
0
0
使用Mybatis Generator自动生成Mybatis相关代码

本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码: 一、构建一个环境: 1. 首先创建一个表: Sql代码 1. CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), spec...

JavaOlder
2012/11/15
0
2

没有更多内容

加载失败,请刷新页面

加载更多

两数的最大公约数

hello,复习一下数学知识! 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 因为之前做一个小功能,需要先计算一下数组的最大公约数,所以我就想记录一下...

woshixin
今天
3
0
学习Node.js的电子书大全

在这里,与大家分享一批很有用的 Node.js 的电子书资源。Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写...

jay603
今天
66
0
《伟大的博弈》读后感作文4100字

《伟大的博弈》读后感作文4100字: 五一小长假,作为工厂员工,没能跟上大家放假的步伐,窝家里两天没出门,逼着自己看完《伟大的博弈》,感触颇多。似乎不能消化,先记录第一遍作为幼稚的见...

原创小博客
昨天
5
0
单点登录-基于Redis+MySQL实现单点登录(SSO)

1. 为什么要用单独登录? 主要便于公司内部多系统统一认证授权管理,一次登录可访问多个跨域系统,也同时更加方便统一管理用户登录(员工离职需要拿掉登录权限、统计所有用户对系统的登录请求...

秋日芒草
昨天
2
0
827. Making A Large Island

思想: 将所有连通的 1 分成一个组,分配编号,然后使用BFS统计1的个数,得到这个组的面积。 遍历格子里所有为 0 的元素,检查四个方向的1所在的组并加上这个组面积。于是得到当前元素为 0 ...

reter
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部