自己搭建springboot+mybatis的项目,对创建项目的过程做一个记录,以便自己后期参考查询,同时将搭建中踩过的坑进行记录,并提供解决办法。如有遇到相同问题的同学,希望能给你做个参考,少点弯路。
springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便。
一、项目搭建
1.打开IDEA,点击File—>New—>Project…
2.选择Project…之后(如下图),选择Spring Initializr ,点击 Next
3.根据自己项目需要进行修改,这里我修改成project,点击Next。这里需要注意,Group和Artifact不能大小写混用,要全部小写,不然会报错哦!!
4.在当前页面的左侧依次选择:(1)Web,在中间部分勾选Web;(2)Template Engines,勾选Thymeleaf;(3)SQL,勾选MySQL、JDBC和MyBatis。全部选择完成后,然后点击Next
5.项目创建最后一步,确认项目名称和项目保存的位置,点击Finish,完成项目创建后尽量选择New Window,在新的IDEA中打开我们新建的项目。
二、项目启动
1.打开新项目后,项目结构如下所示
生成的项目中,resources文件夹下,static文件夹下存放静态文件,比如css、js、html和图片等 。templates下存放html文件,controller默认访问该文件夹下的html文件。这个在application.properties配置文件中是可以修改的。
2.当我们尝试启动项目,发现项目启动过程出现错误,如下图。
这是因为我们创建Spring Boot项目时,在选择组件时添加了mysql、mybatis,但现在还没有配置数据库,导致项目启动报错。需要在项目的application.properties文件中配置数据信息。
3.根据自己数据库实际,在application.properties文件中配置数据信息(注意这里mysql.jdbc是红色!报错的!!后面会有解决方案)。
PS:这里也可以不使用application.properties文件,采用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除,创建application.yml配置文件(备注:其实SpringBoot底层会把application.yml文件解析为application.properties)
4.配置成功后,再启动项目,发现项目可以正常启动了。可以打开浏览器访问http://localhost:8080/,访问结果下图所示。证明项目正常启动了。
三、项目整合Mybatis
1.先将添加mybatis插件,File—>Settings—>Plugins。我这里是直接在IEDA中安装集成,大家也可以自己下载后安装
在输入框输入“mybatis”,如果有“AutoCurd”,勾选后,点击OK即可。如果没有点击,点击下面的“Search in repositories”,搜索找到之后点击"install"进行安装,并勾选,再点击OK即可。否则自动映射时会报错!说在plugins中找不到“mybaits-generator”。
![](https://img-blog.****img.cn/20190325111052139.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODU1NTEwNg==,size_16,color_FFFFFF,t_70
安装后,选择重新启动
2.在application.properties中设置mybatis映射路径
3.在pom.xml中添加 mybatis generator 自动生成代码插件。
(1)添加依赖:先在properties添加,再添加dependency(一般这里的依赖是修改)
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mysql-connector>5.1.39</mysql-connector>
</properties>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector}</version>
</dependency>
(2)在中添加,mybatis generator 自动映射生成代码
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
4.在resource中创建generatorConfig.xml文件(内容如下),用于与数据库表进行相关配置,自动生成实体、Dao层接口和mapper(xml)文件。
需要注意:(1)classPathEntry的location是所引用mysql-connector-java-5.1.39.jar的全路径
(2)jdbcConnection ,要配置正确的数据连接
(3)javaModelGenerator 、sqlMapGenerator和javaClientGenerator中targetPackage(目标文件夹)、targetProject(目标项目路径),一定要细心,不然会出错。这里配置好targetPackage,IDEA中的目录结构就会在java和resource自动生成entity和mapper文件夹,不用自己创建!
(4)在table中,因为是单项目,所以可以省略schem,如果是多个项目模块,则不能省略
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry location="C:\Users\123\.m2\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>
<context id="my" targetRuntime="MyBatis3" defaultModelType="flat">
<commentGenerator>
<property name="suppressDate" value="false"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://3306/prject"
userId="root"
password="123456"/>
<javaModelGenerator targetPackage="com.project.entity"
targetProject="D:\project\src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.project.mapper"
targetProject="D:\project\src\main\resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator targetPackage="com.project.mapper"
targetProject="D:\project\src\main\java" type="XMLMAPPER">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="data_tag_config" domainObjectName="TagConfig" >
<generatedKey column="location_id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
5.再进行简单配置,以运行生成这个过程共生成三个文件,一个entity,dao,xml文件
(1)下拉选择Edit Configurations…
(2)点击左上角“+”,选择Maven
(3)name建议以实体类命名,点击OK
(4)点击运行,进行自动映射生成代码,生成4个文件如左侧目录所示。
这里需要注意的几点:(1)自动映射时,只能点击一次运行,如只能点击“TagConfig”一次,多次点击时,生成的TgaConfigMapper.xml文件中代码会重复,运行调用时报错。如果点击多次后,需要将已生成的各文件删除,重新运行生成需要的文件。
(2)自动生成映射时的和运行时的名称是不一样的,如果要运行项目,则要点击下拉切换到项目名,再点击运行,
四、常见错误及解决方案
1.在application.properties中,“mysql.jdbc”红色显示报错。解决方案:要在pom.xml文件中配置MySQL驱动器!切记,配置好pom.xml之后,一定要利用maven更新依赖,不然红色还会一直在!
第一步:配置properties中 mysql-connector
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mysql-connector>5.1.39</mysql-connector>
</properties
第二步:建立MySQL 连接驱动依赖,注意此时必须为<version>${mysql-connector}</version>
,如果是<scope>runtime</scope>
会报错!!
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector}</version>
</dependency>
1.当报“Communications link failure”错误时,说明数据库连接错误,查看generatorConfig.xml 和application.properties中数据库连接配置是否正确。