初次接触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

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐