1. 前言
1.1.写本文的目的
- 记录自己从0到1建立SpringBoot+Mybatis项目
- 方便有其他语言的开发者能够从0到1快速衔接到JavaSpringBoot项目中
- 为之后Java项目的案例提供基础
1.2. 本文的内容
- IDEA的安装
- Maven的安装
- SpringBoot+Mybatis项目的搭建
- 启动项目,连接数据库以及代码编写
- 流程整理
2. IDEA的安装
2.1. IDEA的安装
本文使用的是IDEA2021版本,下载版本地址为:官网(https://www.jetbrains.com/idea/download)
2.3. 设置IDEA
对于目标受众来说,设置匹配开发者开发模式的开发方式
- 快捷键以及调试快捷键
3. Maven的安装
具体可以参考:https://blog.csdn.net/weixin_44985115/article/details/115253160
4. SpringBoot+Mybatis项目的搭建
开发人员少废话
下面的这一步,第一次构建往往需要下载一段时间
往往在这一步如果项目代码内容不多可以在当前项目中直接编写,如果内容较多,我一般会删除一下文件夹内容
增加子项目
以下我们开始通过Maven搭建代码框架
- 修改Maven
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>
<groupId>com.xiaocai</groupId>
<artifactId>SpringBootMyGetDBDemo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mybatisGetDB</module>
</modules>
<name>SpringBootMyGetDBDemo</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<repositories>
<repository>
<id>nexus-release</id>
<!-- 私服地址: http://10.1.102.47:9081/repository/maven-public/-->
<url>私服地址/repository/maven-public/</url>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>私服地址/repository/maven-snapshots/</url>
</repository>
</repositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<!-- 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.6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.6.3</version>
</dependency>
<!-- 核心功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.3.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.6.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<!-- 这个地址是私服groups类型的地址,该地址从私服仓库列表的最后一列可查看 -->
<url>私服地址/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
需要点击右侧面板中的Reload All Maven Projects
,点击之后如果初次构建则要下载一定的时间
5. 启动项目,连接数据库以及代码编写
5.1. 使用SpringBoot启动项目
package com.xiaocai;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Hello world!
*/
@SpringBootApplication
@RestController
public class App {
@RequestMapping("/")
public String home() {
return "小菜不帅吗?";
}
public static void main(String[] args) {
System.out.println("Hello World!");
SpringApplication.run(App.class, args);
}
}
添加文件夹application.yml
server:
port: 8080
spring:
application:
name: jgdf-template
version: v1.0-beta
datasource:
name: systemManager
url: jdbc:postgresql://10.1.100.153:5432/clp
username: clp
password: clp
driver-class-name: org.postgresql.Driver
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
logging:
level:
cn.piesat: debug
file: ./logs/Spring.log
5.2. Mybatis代码获取数据库数据
创建文件夹entity
、mapper
、mapper
分辨创建文件User.java
、UserMapper.java
、UserMapper.xml
分别编写代码如下:
package com.xiaocai.entity;
public class User {
private Long id;
private String name;
private String nickname;
private String loginname;
private String password;
private String idnumber;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIdnumber() {
return idnumber;
}
public void setIdnumber(String idnumber) {
this.idnumber = idnumber;
}
}
package com.xiaocai.mapper;
import com.xiaocai.entity.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper {
User selectById(@Param("f_id") Integer f_id);
User selectByUsername(@Param("f_name") String f_name);
List<User> selectAll();
}
<?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.xiaocai.mapper.UserMapper">
<resultMap id="userMap" type="com.xiaocai.entity.User">
<id property="id" column="f_id" />
<result property="name" column="f_name"/>
<result property="nickname" column="f_nickname"/>
<result property="loginname" column="f_loginname" />
<result property="password" column="f_password"/>
<result property="idnumber" column="f_idnumber"/>
</resultMap>
<sql id="FIELDS">
f_id, f_name, f_nickname, f_loginname,f_password,f_idnumber
</sql>
<select id="selectById" parameterType="Integer" resultMap="userMap">
SELECT
<include refid="FIELDS" />
FROM tc_sys_user
WHERE f_id = #{f_id}
LIMIT 1
</select>
<select id="selectByUsername" parameterType="String" resultMap="userMap">
SELECT
<include refid="FIELDS" />
FROM tc_sys_user
WHERE f_name = #{f_name}
LIMIT 1
</select>
<select id="selectAll" resultMap="userMap">
SELECT
<include refid="FIELDS" />
FROM tc_sys_user
</select>
</mapper>
- 增加
mybatis-config.xml
配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer"/>
<typeAlias alias="Long" type="java.lang.Long"/>
<typeAlias alias="HashMap" type="java.util.HashMap"/>
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
</typeAliases>
</configuration>
5.3. 增加接口访问
package com.xiaocai.controller;
import com.xiaocai.entity.User;
import com.xiaocai.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/User")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("selectById")
public User selectById(Integer f_id){
return userService.selectById(f_id);
}
@GetMapping("selectByUsername")
public User selectByUsername(String f_name){
return userService.selectByUsername(f_name);
}
@GetMapping("selectAll")
public List<User> selectAll(){
List<User> users = userService.selectAll();
return users;
}
}
package com.xiaocai.service;
import com.xiaocai.entity.User;
import java.util.List;
public interface UserService {
User selectById(Integer f_id);
User selectByUsername(String f_name);
List<User> selectAll();
}
package com.xiaocai.service.Impl;
import com.xiaocai.entity.User;
import com.xiaocai.mapper.UserMapper;
import com.xiaocai.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
//调用UserMapper查询数据
//@Resource或者@Autowired注解都可
@Resource
@Autowired
private UserMapper userMapper;
@Override
public User selectById(Integer f_id) {
return userMapper.selectById(f_id);
}
@Override
public User selectByUsername(String f_name) {
return userMapper.selectByUsername(f_name);
}
@Override
public List<User> selectAll() {
List<User> users = userMapper.selectAll();
return users;
}
}
现在最后需要转过头去修改之前的一些文件,之所以在之前没有增加,是因为思维逻辑是这样过来的,之前加了是经验,现在加是推理
- 扫描内容
@MapperScan("com.xiaocai.mapper")
package com.xiaocai;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Hello world!
*/
@SpringBootApplication
@MapperScan("com.xiaocai.mapper")
@RestController
public class App {
@RequestMapping("/")
public String home() {
return "小菜不帅吗?";
}
public static void main(String[] args) {
System.out.println("Hello World!");
SpringApplication.run(App.class, args);
}
}
- mybatis 配置内容
# mybatis 配置内容
mybatis:
config-location: classpath:mybatis-config.xml # 配置 MyBatis 配置文件路径
mapper-locations: classpath:mapper/*.xml # 配置 Mapper XML 地址
type-aliases-package: com.xiaocai.entity # 配置数据库实体包路径
server:
port: 8080
spring:
application:
name: jgdf-template
version: v1.0-beta
datasource:
name: systemManager
url: jdbc:postgresql://10.1.100.153:5432/clp
username: clp
password: clp
driver-class-name: org.postgresql.Driver
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
# mybatis 配置内容
mybatis:
config-location: classpath:mybatis-config.xml # 配置 MyBatis 配置文件路径
mapper-locations: classpath:mapper/*.xml # 配置 Mapper XML 地址
type-aliases-package: com.xiaocai.entity # 配置数据库实体包路径
logging:
level:
cn.piesat: debug
file: ./logs/Spring.log