Springboot + mybatis 环境搭建
springBoot 就是讲一些基础的框架集合起来,提供默认的配置,减少人为的配置。不用 springBoot 而用 spring 也是可以将项目搭建起来的。
开发环境: IDEA(推荐)
1:Intellij idea菜单栏File->new->project
2:选择左侧栏中spring initializr,右侧选择jdk版本,以及默认的Service URL,点击next。
3:填写项目的相关信息
4:选择数据库,我用的是 MySQL 选择MySQL和MyBatis 就行。
5:填写项目的名称,选择项目的路径
6:点击finish
这样 web项目的环境就搭建好了,pom.xml里已经有了Spring boot的jar包,包括我们的mysql数据连接的jar包。Spring boot内置了类似tomcat这样的中间件,所以,只要运行DemoApplication中的main方法就可以启动项目了。
2:连接数据库
由于环境创建好之后,pom.xml 中就已经有了mybatis 依赖包,在此只配置数据链接就行。
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username:
root
password:
root123
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.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo
project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!--
lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--集成日志logback+slf4j -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
<!--<packaging>jar</packaging>-->
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3:验证自己搭建的环境
目录结构如下:
controller:
@RestController
@RequestMapping("user")
public class UserController {
private static final
Logger logger
= LoggerFactory.getLogger(UserController.class);
@Autowired
private
IUserService userService;
@GetMapping("getUser")
public
List<UserEntity> getUser(){
logger.info("获取用户数据");
UserEntity user = new
UserEntity();
return
userService.getUser();
}
}
Service:
public interface IUserService {
public
List<UserEntity> getUser();
}
ServiceImpl:
@Service
@Transactional
public class IUserServiceImpl
implements IUserService {
@Autowired
private
UserMapper userMapper;
//获取用户的信息
public
List<UserEntity> getUser(){
List<UserEntity> userList =
new ArrayList<>();
userList = userMapper.getUser();
return
userList;
}
}
Mapper:
方法一:
@Mapper
public interface UserMapper {
//获取用户信息
@Select("select * from user")
List<UserEntity> getUser();
}
mapper 写的方式有两种,方法一直接将 SQL语句写在 mapper 文件中,方法二:方法将SQL语句写在 .xml 文件中。
方法一:1:需要写 @Mapper 注解 或者在启动springboot 项目时,配置Mapper 的位置。
方法二: 将 与数据库交互语句写在 .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.demo.mapper.UserMapper">
<resultMap
type="com.example.demo.entity.UserEntity"
id="user">
<result
property="id"
column="id"
/>
<result
property="name"
column="name"/>
<result
property="age"
column="age"/>
</resultMap>
<!-- 查找所有 -->
<select
id="getUser"
resultMap="user">
select *
from user
</select>
</mapper>
注意: 如果使用方法二,会出现以下的错误。
binding.BindingException: Invalid bound statement (not found): com.example.demo.mapper.UserMapper.getUser
出现这种问题,一般情况下是自己的 .xml 工作空间写错了,但是我检查过后,我的工作空间没有写错,就该考虑是不是缺少了什么配置,百度过之后,发现少启动文件中少配置了实体路径和 .xml 路径,因此需要加上这两条配置。
4:在浏览器访问