在初学springboot的时候,只能一个人摸索,也踩了不少的大水坑。。。。网上的各种教程不适合自己用。下面自己写一个整合教程,也把坑标记出来。
首先我们在创建项目的时候 ,尽量不要勾选像 WEB mybatis mysql 这些选项 。勾选上以后也只是自动添加依赖罢了,有时候会和你本地的环境不一致 而出现何种错误。我们可以创建项目以后自己添加pom依赖,去maven中央仓库查询pom.
有几种创建方式 ,我这里使用的是sts插件,在这里下载
然后我们创建项目
尽量不要勾选 自己添加比较好根据自己的版本信息去找
第一个java类 就是springboot的启动类,他是通过main方法来启动的
application.propertis是他的配置文件,配置数据库信息,以及mybaits扫描等等 他也可以写成application.yml
这个文件中。格式很重要,如果你会Python的话应该懂得,类似,空格对齐之类的 不能出现tab空格,否则会出问题
下面我们对这个项目加上需要的pom依赖,依赖可以从下面这里去查询这是中央仓库的地址
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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>my-s-m-m-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-s-m-m-1</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</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后我们新增controller包结构,新增UserController类
这里我新增了一个方法 需要注意的是我箭头指向的地方
首先 @RestController注解相当于@ResponseBody + @Controller合在一起的作用。
@RequestMapping 和springMVC一样 说到底springboot 他只是将springMVC 和 spring整合在了一起,以前我们需要手动去给他配置各种xml让他们相互依赖。springboot 将这些整合成了一个框架,不需要再那么繁琐的去配置。
好,这些的话自己查下资料,然后我们启动这个项目访问一下,
注意 启动之前先将mybatis 的pom注释掉否则会出现扫描不到文件的错误 导致启动失败,等我们将mybatis的代码写完,再将它放开
<!-- <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
-->
启动没有报错,我们访问这个路径http://localhost:8080/userCon/testSpringboot
输出成功,这样 项目创建没有问题 这时候 我们就将项目整个demo完成下来 最后的时候说一下要注意的点:
现在整个目录结构是这样的 然后我是使用mybatis的generator工具来进行生成我会把这个工具下载地址放在文章的最后,
generator.xml
在生成文件的时候,由于我用的是mysql8.0.15版本 需要注意的是 驱动地址 和链接属性 都在5.*以后的版本改变了 这里我把两个都贴出来
新版本:
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springboot?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true" userId="root" password="root">
</jdbcConnection>
老版本:
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springboot" userId="root" password="root">
</jdbcConnection>
这一段是非常重要的 记下来 要考的
?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true
新版本必须加。。。。。。。很大的坑 找了很久
这是将生成的实体类 mapper的文件已经放到了项目中。仔细检查一下你的mapper.xml文件是否生成有错误。最好将自动生成的方法删掉 只留一个查询,然后先把项目测通了再说。
我们再加上service业务层的接口和实现类
下面贴出来我实测有任何问题的配置文件(有问题你找我!!):
建表语句:
CREATE TABLE `user` (
`id` int(32) NOT NULL AUTO_INCREMENT,
`userName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`passWord` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`realName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
application.yml
spring:
profiles:
active:
datasource:
url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
typeAliasesPackage: com.example.entity
mapperLocations: classpath*:mapping/*.xml
记住啊 对齐。不知道的可以直接复制过去 整个文件不爆红 不爆黄才算是格式对
下面我将每个层次的代码都贴出来
UserController.java
package com.example.controller;
import java.util.Hashtable;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.service.UserService;
@RestController
@RequestMapping("/userCon")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/testSpringboot")
public Map<String, Object> testSpringboot(){
Map<String, Object> maps = new Hashtable<>();
maps.put("name", "测试输出");
return maps;
}
@RequestMapping("getmmm")
@ResponseBody
public Map<String, Object> getmmm(){
Map<String, Object> mm = userService.getMaps();
return mm;
}
}
UserService.java
package com.example.service;
import java.util.Map;
public interface UserService {
Map<String, Object> getMaps();
}
UserService.impl.java
package com.example.service.impl;
import java.sql.SQLData;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Map<String, Object> getMaps() {
Integer i = 1;
Map<String, Object> j = new HashMap<String, Object>();
User selectByPrimaryKey = userMapper.selectByPrimaryKey(i);
j.put("service", selectByPrimaryKey);
return j;
}
}
UserMapper.java
package com.example.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.example.entity.User;
@Mapper
@Repository
public interface UserMapper {
User selectByPrimaryKey(Integer id);
}
UserMapper.xml
<?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.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="username" />
<result column="passWord" jdbcType="VARCHAR" property="password" />
<result column="realName" jdbcType="VARCHAR" property="realname" />
</resultMap>
<sql id="Base_Column_List">
id, userName, passWord, realName
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from user
where id = #{id,jdbcType=INTEGER}
</select>
</mapper>
完整的代码都在这。这个时候 测试代码有了 配置数据库 mybatis有了 启动项目 。
访问 http://localhost:8080/userCon/getmmm
返回没问题。
这时候你就可以去做你的项目了 需要集成其他的技术 以后会更新 有什么问题可以留言或者联系我
我附上项目demo 和 代码生成器软件
链接: https://pan.baidu.com/s/1-416_ZoEIpP0CsbvyfEpPQ 提取码: frsk 复制这段内容后打开百度网盘手机App,操作更方便哦
不要钱 不要金币 有问题随时问我