1、创建SpringBoot工程,修改pom.xml文件添加相关依赖。
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>SpringBootLearns</artifactId>
<groupId>spring.boot.learns</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>learn-mybatitis</artifactId>
<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>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
2、修改application.yml配置文件,添加数据源、mybatis配置。
spring:
application:
name: learn-mybatis
datasource:
url: jdbc:mysql://127.0.0.1:3306/my_learn?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root1234
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.learn.entity
configuration:
map-underscore-to-camel-case: true #开启驼峰功能
3、实例检测
package com.learn.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* @Title MlTest
* @Description MlTest
* @Author Ltter
* @Date 2022/8/18 15:00
* @Version 1.0
*/
@Data
public class MlTest implements Serializable {
private String id;
/**
* 解决命名规范问题;像这种字段在get/set时,TN都是大写的字母挨在了一起,所以无法赋值。这时需要用到@JsonProperty注解解决
*/
@JsonProperty(value = "tName")
private String tName;
private Integer age;
private Date birthday;
}
package com.learn.controller;
import com.alibaba.fastjson.JSONObject;
import com.learn.entity.MlTest;
import com.learn.service.MlTestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Title MlTestController
* @Description MlTestController
* @Author Ltter
* @Date 2022/8/18 14:59
* @Version 1.0
*/
@RestController
@RequestMapping("/ml")
public class MlTestController {
@Autowired
private MlTestService mlTestService;
@GetMapping("/find")
public Map<String, Object> find(){
List<MlTest> list = mlTestService.find();
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("code", 0);
resultMap.put("message", "success");
resultMap.put("data", JSONObject.toJSONString(list));
return resultMap;
}
@PostMapping("/save")
public Map<String, Object> save(@RequestBody MlTest mlTest){
Boolean result = mlTestService.save(mlTest);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("code", 0);
resultMap.put("message", "success");
resultMap.put("data", result);
return resultMap;
}
}
package com.learn.service.impl;
import com.learn.entity.MlTest;
import com.learn.mapper.MlTestMapper;
import com.learn.service.MlTestService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
/**
* @Title MlTestServiceImpl
* @Description MlTestServiceImpl
* @Author Ltter
* @Date 2022/8/18 15:00
* @Version 1.0
*/
@Service
public class MlTestServiceImpl implements MlTestService {
@Resource
private MlTestMapper mlTestMapper;
@Override
public List<MlTest> find() {
return mlTestMapper.find();
}
@Override
public Boolean save(MlTest mlTest) {
mlTest.setId(UUID.randomUUID().toString().replace("-",""));
return mlTestMapper.insertOne(mlTest);
}
}
package com.learn.mapper;
import com.learn.entity.MlTest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Title MlTestMapper
* @Description MlTestMapper
* @Author Ltter
* @Date 2022/8/18 15:01
* @Version 1.0
*/
@Mapper
public interface MlTestMapper {
List<MlTest> find();
Boolean insertOne(@Param("tt") MlTest mlTest);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.learn.mapper.MlTestMapper">
<select id="find" resultType="com.learn.entity.MlTest">
select * from ml_test
</select>
<insert id="insertOne">
insert into ml_test(id, t_name, age, birthday)
VALUES(#{tt.id},#{tt.tName},#{tt.age},#{tt.birthday})
</insert>
</mapper>
Mybatis-Generator
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--mybatis代码生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<!--配置文件位置-->
<configuration>
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<!--运行时显示详细信息-->
<verbose>true</verbose>
<!--overwrite为true时 每次生成都会覆盖原生成的文件-->
<overwrite>true</overwrite>
</configuration>
<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置-->
<executions>
<!--execution元素包含了插件执行需要的信息-->
<execution>
<!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标-->
<id>Generate MyBatis Artifacts</id>
<!--配置的执行目标-->
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<!--插件所需要的额外依赖-->
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/my_learn?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8
username=root
password=root1234
<?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>
<properties resource="mybatis-generator/generator.properties"/>
<!-- 连接数据库jar包的路径-->
<classPathEntry location="D:\Program Files\Maven\mvnRepository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库连接参数 -->
<jdbcConnection driverClass="${driverClassName}"
connectionURL="${url}"
userId="${username}"
password="${password}">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 实体类的包名和存放路径 -->
<javaModelGenerator targetPackage="com.learn.domain" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件*.xml的位置-->
<sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.learn.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- tableName:数据库中的表名或视图名;domainObjectName:生成的实体类的类名-->
<table tableName="test_user" domainObjectName="TestUser"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>
<!--<table tableName="xxx" domainObjectName="xxx"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>
...
<table tableName="xxx" domainObjectName="xxx"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>-->
</context>
</generatorConfiguration>
实测可用。源码地址:GitHub - mrzltao/spring-boot-learns