spring boot + mybatis框架入门
初次接触spring boot ,也是本人第一次写blog,写这篇blog的目的是为了让初次学习spring boot + mybaits集成的小伙伴能快速入门,同时也是为了让自己对对spring boot + mybatis集成有更深入的理解。废话不多说,下面开始spring boot 学习环境准备:eclipse 4.8.0JDK 1.8.0_201MavenMysql 8...
初次接触spring boot ,也是本人第一次写blog,写这篇blog的目的是为了让初次学习spring boot + mybaits集成的小伙伴能快速入门,同时也是为了让自己对对spring boot + mybatis集成有更深入的理解。废话不多说,下面开始spring boot 学习
环境准备:
- eclipse 4.8.0
- JDK 1.8.0_201
- Maven
- Mysql 8.0.12
一、首先搭建一个简单的spring boot 项目(Hello World),该项目暂时未用到mybatis.
1.1 spring boot 项目搭建
本人采用直接从https://start.spring.io/ 初始化的方法创建项目,如图所示填写基本信息
1.2 将下载的maven解压后导入eclipse中,导入之后的项目结构如图所示
1.3 文件结构说明
src/main/java:该文件夹下为项目的Java文件,之后编写Java文件都在该文件夹下
src/main/resources:该文件夹为项目的资源文件,如css、js、html、img文件等都在该文件下
src/test/java:系统测试文件
DemoApplication.java文件为项目的启动文件,相当于main函数,启动项目的时候选中该文件,右键run as ->Java Application运行项目
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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties配置文件如下:
#DB configuration
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis configuration
mybatis.mapperLocations=classpath:mybatis/*Mapper.xml
mybatis.typeAliasesPackage=com.chendikai.pojo
1.4 编写Hello World文件,在com.example.demo文件夹下新建一个package,如com.example.demo.controller,然后在该package下新建一个Java文件,如HelloController.java,如图所示
创建HelloController之后编写代码,代码如下:
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/demo")
public class HelloController {
@RequestMapping("/hello")
public String sayHello() {
return "Hello World!";
}
}
1.5 运行项目,在浏览器中输入http://localhost:8080/demo/hello,出现如下图所示的Hello World!则表示一个简单的spring boot 创建成功
二、spring boot 中集成mybatis
2.1 重新搭建一个项目spring boot2,项目结构如图所示
其中pom.xml文件中需加入mybatis依赖、mysql依赖、和thymeleaf(本项目用到了前端页面,因此需要加入thymeleaf依赖),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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.chendikai</groupId>
<artifactId>springboot2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot2</name>
<description>Demo project for Spring Boot</description>
<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.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2 下面开始敲代码,各Java文件代码如下:
springboot主要分为四层结构,分别为控制器层(Controller)、数据持久层(Mapper)、实体类层(Pojo)、服务层(Service)。
实体类User,User.java代码
package com.chendikai.pojo;
public class User {
private int id;
private String name;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
数据持久层UserMapper,UserMapper.java代码如下:
package com.chendikai.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.chendikai.pojo.User;
@Mapper
public interface UserMapper {
public User findByName(String name);
}
服务层Service,UserService.java代码如下:
package com.chendikai.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.chendikai.mapper.UserMapper;
import com.chendikai.pojo.User;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findByName(String name) {
return userMapper.findByName(name);
}
}
控制层Controller,UserController.java代码如下:
package com.chendikai.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.chendikai.pojo.User;
import com.chendikai.service.UserService;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getUserInfo/{name}")
@ResponseBody
public ModelAndView getUserInfo(@PathVariable String name) {
User user = userService.findByName(name);
if (user != null) {
System.out.println("user.getName():"+user.getName());
}
return new ModelAndView("login");
}
/**
*
* @param name : 用户输入的数据
*/
@RequestMapping("/getUserInfo1")
@ResponseBody
public ModelAndView getUserInfo1(@RequestParam(value="name") String name, Model model) {
User user = userService.findByName(name); //user:数据库查询之后的user对象
if (user == null) {
model.addAttribute("name", name);
return new ModelAndView("error");
}
//System.out.println("user.getName():"+user.getName());
model.addAttribute("name", user);
return new ModelAndView("login");
}
}
UserMapper.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chendikai.mapper.UserMapper">
<resultMap id="userMap" type="com.chendikai.pojo.User">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="name" column="user_name" javaType="java.lang.String"></result>
<result property="pwd" column="password" javaType="java.lang.String"></result>
</resultMap>
<select id="findByName" resultMap="userMap">
select * from user_springboot2 where user_name=#{name}
</select>
</mapper>
error.html文件如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Failure</title>
</head>
<body>
<h1>登录失败</h1>
<p th:text="'Sorry,'+${name}+'!'" /> <!-- name:不是对象,而是一个数据变量 -->
</body>
</html>
login.html文件如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Success</title>
</head>
<body>
<h1>登录成功</h1>
<p th:text="'Hello,'+${name.getName()}+'!'" /> <!-- name:一个用户对象 -->
<!-- <p th:text="'Hello,'+${name.name}+'!'" /> -->
</body>
</html>
最后,因为用到了mybatis和mysql,因此数据库肯定是必不可少的,因此需要新建一个数据库和表,数据库代码如下:
/*
Navicat MySQL Data Transfer
Source Server : mysql
Source Server Version : 80012
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 80012
File Encoding : 65001
Date: 2019-02-25 15:44:25
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user_springboot2
-- ----------------------------
DROP TABLE IF EXISTS `user_springboot2`;
CREATE TABLE `user_springboot2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user_springboot2
-- ----------------------------
INSERT INTO `user_springboot2` VALUES ('1', 'chendikai', '123456');
INSERT INTO `user_springboot2` VALUES ('13', 'chenhanyang', '456321');
一切准备就绪之后就可以开始运行项目了,运行成功之后在浏览器中输入http://localhost:8080/getUserInfo1?name=chendikai,成功之后就会显示如下:
如果在浏览器中输入http://localhost:8080/getUserInfo1?name=daixianming,则会显示登录失败,因为数据库中没有daixianming这个用户,因此查询不到,失败界面如下:
至此,spring boot 集成mybaits到此就算搭建成功了。本人也是新手,有机会大家多交流交流!需要源码的私信我邮箱:chendikai1314@163.com
更多推荐
所有评论(0)