一、开发环境
win10+idea+jdk1.8
二、项目目录
controller:控制器,其中写业务逻辑
domain:实体类,对应数据库中的表
mapper:数据库交互接口,相对于其他目录结构中的dao
service:对各个数据库的具体操作,其中UserService为接口,在impl中实现该接口
SpringbootApplication:项目入口
static:静态资源
templates:静态页面
pom.xml:配置maven依赖
本文主要讲解配置mybatis,所以不会完整介绍整个项目结构。
三、配置流程
(1)新建spring boot项目
具体参考链接:https://blog.csdn.net/sinat_41333476/article/details/81414040
在新建项目完成以后如果出现右下角的提示,选择第二个,这样以后再修改pom.xml文件时idea会自动帮我们下载依赖。
(2)改造项目目录文件
改成如下样子,需要添加的是controller、domain、mapper、service
(3)添加依赖
在pom.xml中添加如下三个依赖,添加的位置为pom的<dependencies></dependencies>标签中。
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 引入starter-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MySQL的JDBC驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
(4)添加数据库连接信息
在com.example.demo.DemoApplication中添加数据库的连接信息
其中第一条为地址以及连接的表,比如
spring.datasource.url=jdbc:mysql://你的数据库地址/你的表?useUnicode=true&characterEncoding=utf-8
第二条第三条为用户名和密码
spring.datasource.url=jdbc:mysql://localhost:3306/springdemo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username =root
spring.datasource.password =xxxxxxxx
完成后效果如下:
(5)编写domain
在domain中新建一个User.java类,对应的是我们数据库中的user表,User.java类中包含user表中各个字段以及set和get方法
package com.example.demo.domain;
/**
* @Description: User实体
* @Author: klx
* @Date: 2019/3/28
*/
public class User {
private int id;
private String username;
private String password;
private String content;
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public void setUsername(String name) {
this.username = name;
}
public String getPassword() {
return password;
}
public void setPassword(String psw) {
this.password = psw;
}
public String getContent() {
return content;
}
public void setContent(String c) {
this.content = c;
}
}
数据库中的user表为:
(6)编写UserMapper
这是数据库接口,相对于其他目录结构中的dao层。新建一个UserMapper.java,添加代码如下,我们定义一个insert操作
package com.example.demo.mapper;
import com.example.demo.domain.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
/**
* @description: 访问user数据库接口
* @author: klx
* @create: 2019-03-28 19:15
**/
public interface UserMapper {
@Insert("INSERT INTO user(username, password, content) VALUES(#{username}, #{password}, #{content})")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") //keyProperty java对象的属性;keyColumn表示数据库的字段
int insert(User user);
}
如果出现报错,可能是某些class未导入,光标放在报错部分,使用快捷键alt+enter
然后选择import class即可,如果没有impot class选项,可能某些依赖未加载
(7)编写service,先在service中新建一个UserService.java,这是一个操纵user的接口,里面写一个add方法来加入用户。
package com.example.demo.service;
import com.example.demo.domain.User;
/**
* @Description: 用户表的数据库操作
* @Author: klx
* @Date: 2019/3/28
*/
public interface UserService {
public int add(User user);
}
然后再新建文件夹impl,在其中新建一个UserServiceImpl.java来实现该接口
package com.example.demo.service.impl;
import com.example.demo.domain.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public int add(User user) {
userMapper.insert(user);
int id = user.getId();
return id;
}
}
如果出现如下错误
参照:https://blog.csdn.net/xlxxybz1314/article/details/51404700
(8)编写controller
这是我们写业务逻辑的地方,新建一个UserController.java
package com.example.demo.controller;
import com.example.demo.domain.User;
import com.example.demo.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;
@RestController
@RequestMapping("api/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("add")
public String add() {
User user = new User();
user.setUsername("xxx");
user.setPassword("xxxxxxxxxx");
user.setContent("这是插入的一条测试数据");
userService.add(user);
return "add success";
}
}
(9)最后,在com.example.demo.DemoApplication的启动类中加入
@MapperScan("com.example.demo.mapper")
让spring能正确加载我们的mapper,此时启动类内完整代码如下
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
好了,到这一步终于配置完成
四、启动项目
如何启动项目就不介绍了,不会的同学自行百度,如果启动之后未报错则项目启动成功,在浏览器输入地址http://localhost:8080/应该能看到如下页面
这是因为我们没有配置该路由,将地址栏改成我们配置过的路由http://localhost:8080/api/user/add来访问我们的控制器,正常情况应该输出add success,但是此时出现报错页面
这个问题能够百度到,我就不贴解决地址了,锻炼一下大家的搜索能力,实在找不到可以下载源码到配置数据库连接的地方寻找答案,源码会在文末给出。解决该问题以后出现如下页面:
这时查看我们的数据库是否多出了一条插入的信息
可以看到,第三条数据便是我们刚刚插入进去的数据,至此,已经完成和数据库的交互,其他操作类似于插入操作,至于mapper.java应该怎么编写,请各位自行百度,本文采取的是注解的方式编写mapper文件。
五、github地址
https://github.com/klx-buct/springDemo
我将本次实例的代码以及数据表上传至github,有需要的可以自取(注意,如果自己新建项目加入本文中的代码,可能由于项目名字的问题导致项目无法正常启动,需要自行修改部分代码方可正常启动)
六、结语
本文只是带领你配置一个简单的spring boot+mybatis环境,更多的操作以及对文中代码存在疑惑的地方需要自己去学习相关知识,同时文中给出了部分报错的解决方案,如果你遇见了没有给出解决方案的bug,请善用google or baidu,同时,如果文中有错误的地方还请各位大佬指出,本人也是初入spring的坑,所以不能将每个知识点讲解透彻。