#因为自己之前springboot集成mysql和mybatis也费了不少时间,所以在此记录下来,写得不好,多多包涵哈
1引入相关依赖
<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 http://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.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1</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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mysql数据库的依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis相关依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 --><plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--generatorConfig.xml文件的位置-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.配置application.yml参数
spring:
datasource:
#数据库地址,端口和数据库名字,问号后面是编码和时区
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#数据登录名
username: root
#数据库密码,没有则不用写
password:
driver-class-name: com.mysql.cj.jdbc.Driver
3.启动springboot项目没有报错则表示连接成功
4.编写TestController测试
package com.example.demo1.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@RestController
@RequestMapping("/ss")
public class TestController {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/getStudent.do")
public List<Map<String, Object>> getDbType(){
String sql = "select * from student";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
for (Map<String, Object> map : list) {
Set<Map.Entry<String, Object>> entries = map.entrySet( );
if(entries != null) {
Iterator<Map.Entry<String, Object>> iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry<String, Object> entry =(Map.Entry<String, Object>) iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
System.out.println(key+":"+value);
}
}
}
return list;
}
}
数据库中的表
发送请求后有数据表示成功
然后集成mybatis
需要导入的相关依赖jar包在开头已经写明
点击idea右边的maven会看到已经有一个mybatis-generator自动生成插件,如下图
从网上找一个generatorConfig.xml文件放到resources目录下
这是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="C:\Users\Y\.m2\repository\mysql\mysql-connector-java\5.1.37\mysql-connector-java-5.1.37.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8" userId="root" password="">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.example.demo1.student.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mapper.student" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo1.student.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="student" domainObjectName="Student"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"></table>
<!-- <table tableName="physical_examination" domainObjectName="PhysicalExamination" -->
<!-- enableCountByExample="false" enableUpdateByExample="false" -->
<!-- enableDeleteByExample="false" enableSelectByExample="false" -->
<!-- selectByExampleQueryId="false"> -->
<!-- <columnOverride column="general_condition" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="skin" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="lymphaden" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="features" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="neck" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="chest" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="lung" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="heart" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="abdomen" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="anus_genitals" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="spinal_limbs" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="nervous_system" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="speciality_check" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- <columnOverride column="other_description" javaType="java.lang.String" jdbcType="VARCHAR" /> -->
<!-- </table> -->
</context>
</generatorConfiguration>
然后在application.yml里配置相关参数
#mysql连接
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
#mybatis
mybatis:
mapper-locations: classpath:mapper/**/*.xml #这里是存放mapper.xml的位置,必须在resources目录下
type-aliases-package: com.example.demo1.**.entity #这是对应实体类的包的位置
然后右击idea右边maven中的mybatis-generator:generate,选择run即可生成数据库student表中对应的dao和entity,service和controller需自己建,如下图:
然后在springboot启动类中配置相关注解
package com.example.demo1;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.demo1.**"})
//直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,比较麻烦,现在通过使用@MapperScan可以指定要扫描的Mapper类的包的路径
@MapperScan(basePackages={"com.example.demo1.**.dao"})
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}
然后启动springboot项目没有报错就证明集成成功,就可实现自己的功能啦