1.基于idea创建项目,准备工作,安装jdk(此项目基于jdk1.8),安装idea, 安装maven(也可以用idea自带的maven)
2.开始构建项目
File→New→Project
在这里新建一个空的maven项目即可
选择新窗口打开,打开后如下图所示
3.pom.xml文件引入相关依赖Spring Boot 以及Mybatis 依赖,MySQL 连接驱动依赖
<?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>
<groupId>com.example.tp</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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.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>
<scope>runtime</scope>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
修改好之后把pom.xml重新reimport一下
导入完成之后会发现所有依赖的jar包已经引入进来了
maven依赖也没有问题
4.创建数据库及数据表:
CREATE DATABASE IF NOT EXISTS mybatis;
USE `mybatis`;
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`ID` int(11) NOT NULL,
`NAME` varchar(18) DEFAULT NULL,
`SEX` char(2) DEFAULT NULL,
`AGE` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
)
插入几条测试数据
INSERT INTO `tb_user`(`ID`, `NAME`, `SEX`, `AGE`) VALUES (1, 'admin', 'male', 20);
INSERT INTO `tb_user`(`ID`, `NAME`, `SEX`, `AGE`) VALUES (2, 'aaa', 'female', 21);
INSERT INTO `tb_user`(`ID`, `NAME`, `SEX`, `AGE`) VALUES (3, 'bbb', 'male', 18);
5.创建实体类
创建一个和数据库对应的User实体类
定义和数据库对应的属性,生成getter和setter方法
代码如下
package com.example.tp.domain;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:19
* @Version: 1.0
*/
public class User {
private Integer id;
private String name;
private String sex;
private Integer age;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
6. 创建dao层接口
接口中声明一个按照id查询User的方法
package com.example.tp.dao;
import com.example.tp.domain.User;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:21
* @Version: 1.0
*/
public interface UserDao {
/**
* fetch data by rule id
* @param id rule id
* @return Result<User>
*/
public User selectUserById(Integer id);
}
7.创建一个service接口
具体方法和创建dao一样,完整结构如下
package com.example.tp.service;
import com.example.tp.domain.User;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:29
* @Version: 1.0
*/
public interface UserService {
/**
* fetch data by rule id
* @param id rule id
* @return Result<User>
*/
public User selectUserById(Integer id);
}
实现这个service接口
package com.example.tp.service.impl;
import com.example.tp.dao.UserDao;
import com.example.tp.domain.User;
import com.example.tp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:36
* @Version: 1.0
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User selectUserById(Integer id) {
return userDao.selectUserById(id);
}
}
8.创建一个controller类
package com.example.tp.controller;
import com.example.tp.domain.User;
import com.example.tp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:37
* @Version: 1.0
*/
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/query")
public User queryUserById(@RequestParam("id") Integer id) {
return userService.selectUserById(id);
}
}
9.创建程序启动类
package com.example.tp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author: pengtao
* @Date: 2019/3/21/0021 11:40
* @Version: 1.0
*/
@SpringBootApplication
@MapperScan("com.example.tp.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
10.编写mapper文件
在resources目录下建立文件夹mapper, mapper下创建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.tp.dao.UserDao">
<resultMap id="BaseResultMap" type="com.example.tp.domain.User">
<id column="id" property="id" jdbcType="DECIMAL"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="sex" property="sex" jdbcType="VARCHAR"/>
<result column="age" property="age" jdbcType="DECIMAL"/>
</resultMap>
<sql id="Base_Column_List">
ID,NAME,SEX,AGE
</sql>
<select id="selectUserById" parameterType="java.lang.Integer" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tb_user
WHERE id=#{id}
</select>
</mapper>
11.编写application.yml文件
在resources目录下创建application.yml文件
server:
port: 8080
spring:
application:
name: demo
datasource:
name: mysql_test
type: com.alibaba.druid.pool.DruidDataSource
#druid相关配置
druid:
#监控统计拦截的filters
filters: stat
#driver-class-name: com.mysql.jdbc.Driver
#基本属性
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
username: root
password: 123456
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.tp.dao
12.访问地址验证http://localhost:8080/query?id=3