1、创建springboot项目,过程忽略,详细参考我已写好的springboot环境搭建:https://mp.csdn.net/postedit/90175419
2、搭建好之后,大致目录如下图
3、pom.xml
<!-- jdbc两种方式 --> <!--<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> <!-- 引入前端web,此注解不存在Controller层注解会报一系列错误 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- 引入mysql依赖,解决application-dev.xml中驱动driver-class-name无法加载问题 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
4、application.yml
spring:
profiles:
active: dev
5、在resources目录下新建application-dev.yml和application-prod.yml配置文件,注意标红部分数据库使用你们自己的(有些人说中文注释会出错,看情况的,出错再找解决方案。我这里亲测通过)
server:
port: 8080 # HTTP(Tomcat) Port
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC #数据库的连接,springboot是数据库名
driver-class-name: com.mysql.cj.jdbc.Driver # 加载驱动
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.example.demo.entity # mybatis自动扫描到自定义POJO,写完就可以简写了。比如:resultType="类名"
#showSql
logging:
level:
com:
example:
mapper : debug
6、application-prod.yml和application-dev.yml内容一样,项目上线将application.yml中dev修改成prod即可
7、com.example.demo新建controller、service、mapper(接口)、entity目录。resources下新建mapper(存放*Mapper.xml文件)、static、templates目录...
8、数据库结构
create table user(
id INT(100) NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
age INT(40) NOT NULL,
PRIMARY KEY (id)
);
9、entity
package com.example.demo.entity;
public class User {
private Integer id;
private String name;
private Integer age;
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
10、UserMapper(从后开始写吧,不容易出错)
import com.example.demo.entity.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper {
User Sel(int id);
}
11、UserService
import com.example.demo.mapper.UserMapper;
import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User Sel(int id){
return userMapper.Sel(id);
}
}
12、UserController,这里若不是用@RestController,使用@Controller注解,在方法上务必将@ResponseBody加上,否则不报错,为什么犯错都不知道
13、resources下mapper目录中的UserMapper.xml文件(下面resultType可以直接写User,因为在application-dev.yml中已经配置过自动扫描项了。如果不加扫描,必须具体到全路径,不然报找不到错误,已经亲测,可以自己尝试一下。。)
<?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目录下接口路径 -->
<mapper namespace="com.example.demo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.demo.entity.User">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="age" jdbcType="INTEGER" property="age" />
</resultMap>
<!-- 简单来说,resultType是返回的单个实例,也就是当前实例的类型
resultMap返回的是一个List,resultMap=“BaseResultMap”,和id对应。通过映射而找到User这个类型List<User
> -->
<select id="Sel" resultType="com.example.demo.entity.User">
select * from user where id = #{id}
</select>
</mapper>
14、启动类里加上注解用于给出需要扫描的mapper文件路径@MapperScan("com.example.mapper")
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper") //扫描mapper下的所有接口
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
15、网址输入:http://localhost:8080/testBoot/getUser/2,另一种方式在UserController中写了注释,只是用于测试
http://localhost:8080/testBoot/getUser?id=2
16、注意点:UserMapper.xml中namespace对应的全路径,type对应的类全路径,resultType对应的全路径以及启动类中扫描mapper下所有接口的目录路径,别复制我的,使用自己的路径。
17、项目我已上传至百度云
链接:https://pan.baidu.com/s/138e6h801R-xu0IiNqXXsvw
提取码:5lng