springboot+mybatis+mysql集成搭建

Posted dasdfdfecvcx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot+mybatis+mysql集成搭建相关的知识,希望对你有一定的参考价值。

springboot+mybatis+mysql集成搭建

开发工具:IDEA
jdk:1.8
maven:3.6.3
springboot集成mybati和mysql包括集成mybatis自动生成代码插件generator 

使用IDEA  快速搭建springboot框架,使用Spring Initializr 从spring官网快速搭建springboot基础框架 
 

下一步,自定义相关信息


选择需要的依赖


 然后一直Next直到完成,开始生成pom文件,下载依赖包
这样建立工程优点是基本依赖文件是可视化勾选操作配置,对springboot了解不多的人来说会友好一点,缺点就是这是通过spring官网和maven官方库下载文件依赖的,国外网站下载资源,速度会有一定影响的。
当然这也是有解决办法的,进入到工程页面后,将默认的maven配置修改为本地的maven仓库,本地maven镜像修改为阿里云镜像即可。下载速度远超国外网站。


pom文件 
<?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.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-springboot-mybatis</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
自动生成的配置文件为application.properties,而简单清晰的application.yml文件更受欢迎(虽然最终application.yml文件最终会被解析成application.perproties为springboot所用)
spring:
datasource:
name: dyzz
url: jdbc:mysql://127.0.0.1:3306/dyzz?serverTimezone=GMT%2B8
username: root
password: a123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:config/mappings/*.xml
type-aliases-package: com.example.demo.model
添加mybatis对应表自动生成代码插件 
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>deploy</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<configurationFile>
${basedir}/src/main/resources/config/generator/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
添加generatorConfig.xml
<?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="D:apache-maven-3.6.3 epositorymysqlmysql-connector-java8.0.19mysql-connector-java-8.0.19.jar"/>
<context id="DyzzTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
</commentGenerator>
<!--数据库连接驱动类,URL,用户名、密码 -->
<!--com.mysql.cj.jdbc.Driver 版驱动需要指定服务时区,中国时间建议使用
北京时间东八区
serverTimezone=GMT%2B8
或者使用上海时间
serverTimezone=Asia/Shanghai
-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/dyzz?serverTimezone=GMT%2B8"
userId="root" password="a123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成(实体)模型的包名和位置-->
<javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java">
<!-- 是否允许子包,即targetPackage.schemaName.tableName -->
<property name="enableSubPackages" value="false"/>
<!-- 是否对model添加 构造函数 -->
<property name="constructorBased" value="false"/>
<!-- 是否对类CHAR类型的列的数据进行trim操作 -->
<property name="trimStrings" value="true"/>
<!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
<property name="immutable" value="false"/>
<!--父类,超类 没有可以不加-->
<!--
<property name="rootClass" value=""/>
-->
</javaModelGenerator>
<!-- 生成XML映射文件的包名和位置-->
<!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->
<sqlMapGenerator targetPackage="mappings" targetProject="src/main/resources/config">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO接口的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.dao" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<!-- tableName 表明
domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;
enableInsert(默认true):指定是否生成insert语句;
schema
alias 指定新的别名
enableInsert(默认true):指定是否生成insert语句;
enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
modelType:参考context元素的defaultModelType,相当于覆盖;
delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
-->
<table tableName="USERS"
domainObjectName="USERS"
alias="users"
enableInsert="true"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="true">
</table>
</context>
</generatorConfiguration>
然后运行maven 插件

 

 

 

 

 

 

 

 

 

 

 

 

查看运行结果


 

 

ok mybatis 文件生成成功。
写个测试从数据库转一圈
Controller
package com.example.demo.controller;

import com.example.demo.model.USERS;
import com.example.demo.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
* @author :hxg
* @ClassName UserController
* @date :Created in 2020/4/21 19:31
*/
@RestController
@RequestMapping(value = "/user")
public class UserController {

@Resource
private UserService userService;

@RequestMapping(value = "/getUsers")
public List getUsers()throws Exception{

List list = userService.getUsers();
return list;
}
}
Service
package com.example.demo.service;

import com.example.demo.model.USERS;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @author :hxg
* @InterfaceName UserService
* @date :Created in 2020/4/21 19:54
*/
@Service("UserService")
public interface UserService {

List getUsers() throws Exception;
}
ServiceImpl
package com.example.demo.service.impl;

import com.example.demo.dao.USERSMapper;
import com.example.demo.model.USERS;
import com.example.demo.model.USERSExample;
import com.example.demo.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
* @author :hxg
* @ClassName UserServiceImpl
* @date :Created in 2020/4/21 19:55
*/
@Service("UserService")
public class UserServiceImpl implements UserService {

@Resource
private USERSMapper usersMapper;

@Override
public List getUsers() throws Exception {

List list = usersMapper.getUsers();
return list;
}
}
  USERSMapper中新增一个自定义方法
List getUsers();
USERMapper.xml中也对应增加一个查询sql
<select id="getUsers" resultType="com.example.demo.model.USERS">
select * from users
</select>
整体测试结构


启动服务,浏览器访问http://localhost:8080/user/getUsers


OK Springboot+mybatis+mysql 集成测试通过。 
————————————————
原文链接:https://blog.csdn.net/weixin_41775152/java/article/details/105545921

http://www.dj024.com/user/57321.html

http://www.dj024.com/user/57556.html

http://www.dj024.com/user/57560.html

http://www.dj024.com/user/57563.html

http://www.dj024.com/user/57567.html

以上是关于springboot+mybatis+mysql集成搭建的主要内容,如果未能解决你的问题,请参考以下文章

springboot+mybatis+mysql集成搭建

SpringBoot集成MyBatis和MySQL

springboot+mybatis+Druid配置多数据源(mysql+postgre)

springboot融合mybatis+mysql

SpringBoot示例教程MySQL与Mybatis基础用法

Springboot第四章 ORM (MyBatis) 操作 MySQL