当前位置: 首页>移动开发>正文

android studio的后端是什么 android studio前后端分离

spring boot + gradle + mybatis + vue整合前后端分离入门

前言

在做springboot项目时,公司要求是springboot+gradle+mybatis+vue,同时,我又习惯了用ecplise来开发,
   在网上找了许多资料都不是很全,
   于是自己经过磕磕碰碰的尝试整合,终于基于要求做了一个简单的用户管理系统。

前期准备

首先是各种工具的下载与安装:
1.Spring Tool Suite 简称STS,是基于eclipse的springboot的开发工具,下载安装与eclipse一样,下载地址:https://spring.io/tools3/sts/all/ 2.Gradle的下载与安装与eclipse(STS)集成(点击查看)
3.Vue的相关下载与安装。
4.Vue开发工具的下载与安装。

1.使用STS创建一个springboot项目

1.打开STS,在左侧空白区右键new,新建一个spring starter project项目

android studio的后端是什么 android studio前后端分离,android studio的后端是什么 android studio前后端分离_gradle,第1张

Service URL默认的,不用变,Name是项目名。Type选择gradle(详细看gradle下载与安装),jdk版本要8,Group是组织名,Description描述随便写,Package是包名。然后next。

android studio的后端是什么 android studio前后端分离,android studio的后端是什么 android studio前后端分离_mybatis_02,第2张

这里可以根据你项目的需要勾选所需要的依赖包,也可以不勾选,等项目新建后再添加相关依赖。

android studio的后端是什么 android studio前后端分离,android studio的后端是什么 android studio前后端分离_spring_03,第3张

再next,点finish,就创建好了一个springboot项目了。目录结构如下所示:

android studio的后端是什么 android studio前后端分离,android studio的后端是什么 android studio前后端分离_gradle_04,第4张

2,正式开发

1.使用gradle导入依赖
打开build.gradle文件,在dependencies中导入依赖

dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web'
 compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0')
 runtimeOnly 'mysql:mysql-connector-java'
 testImplementation 'org.springframework.boot:spring-boot-starter-test'
 compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.4.RELEASE'
}

若在项目创建时已经勾选的相关依赖,就不需要再导入了。spring-boot-devtools是springboot热部署的依赖包,可以不导入。

2.用MVC模式来编程

先来一张整体结构图

android studio的后端是什么 android studio前后端分离,android studio的后端是什么 android studio前后端分离_gradle_05,第5张

注意:自动生成的启动类不能和其他类在同一级,必须在上一级。

下面是代码:
(1)启动类:CustomerServiceApplication.java

package com.seley.service.customer;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.seley.service.customer.dao")
public class CustomerServiceApplication {

 public static void main(String[] args) {
  SpringApplication.run(CustomerServiceApplication.class, args);
 }
}

说明@MapperScan注解作用指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类,添加位置:是在Springboot启动类上面添加。或者在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类,但需要在每个接口类上加上@Mapper注解,比较麻烦,所以用@MapperScan

(2)实体类:User.java

package com.seley.service.customer.entities;

import java.io.Serializable;

@SuppressWarnings("serial")
public class User implements Serializable{
	
	private Integer id;
	private String name;
	private String sex;
	private String tel;
	private String email;
	public User() {}
	public User(Integer id, String name, String sex, String tel, String email) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.tel = tel;
		this.email = email;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

(3)Dao接口:UserDao.java

package com.seley.service.customer.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.seley.service.customer.entities.User;

public interface UserDao {
	
	public List<User> getAllUser();
	
	public int addUser(User user);
	
	public int deleteUser(@Param("id")Integer id);
	
	public User getUser(@Param("id")Integer id);

}

(4)Mapper映射文件:UserMapper.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.seley.service.customer.dao.UserDao" >
   <insert id="addUser" parameterType="User">
    insert into user(name, sex, tel, email) values(#{name}, #{sex}, #{tel}, #{email})
   </insert>
   <select id="getAllUser" resultType="User">
    select id, name, sex, tel, email from user
  </select>
  <delete id="deleteUser">
      delete from user where id=#{id}
   </delete>
   <select id="getUser" resultType="User">
      select id, name, sex, tel, email from user where id=#{id}
   </select>
</mapper>

注意:1.命名空间地址要写全路径。2.实体类可以写全路径,亦可以简写,但是简写的前提是在配置文件中要有相关配置。(后面说明)

(5)Service层接口:MainService.java

package com.seley.service.customer.service;

import java.util.List;

import com.seley.service.customer.entities.User;

public interface MainService {
	
	public List<User> getAllUser();
	
	public int addUser(User user);
	
	public int deleteUser(int id);
	
	public User getUser(int id);

}

(6)Service层实现类:MainServiceImpl.java

package com.seley.service.customer.serviceimpl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seley.service.customer.dao.UserDao;
import com.seley.service.customer.entities.User;
import com.seley.service.customer.service.MainService;

@Service
public class MainServiceImpl implements MainService{
	
	@Autowired
	private UserDao userDao;

	@Override
	public List<User> getAllUser() {
		
		return userDao.getAllUser();
	}

	@Override
	public int addUser(User user) {
		
		return userDao.addUser(user);
	}

	@Override
	public int deleteUser(int id) {
		
		return userDao.deleteUser(id);
	}

	@Override
	public User getUser(int id) {
		
		return userDao.getUser(id);
	}

}

注意@Service注解不能忘;@Autowired注入对象

(7)控制器:MainController.java

package com.seley.service.customer.controller;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.seley.service.customer.entities.User;
import com.seley.service.customer.service.MainService;

@RestController
public class MainController {
	
	@Autowired
	private MainService mainService;
	
	@RequestMapping(value = "/get/users", method = RequestMethod.GET)
	public List<User> getAllUser() {
		List<User> userList = mainService.getAllUser();
		return userList;
	}
	
	@RequestMapping(value="/post", method=RequestMethod.POST)
	public int addUser(@RequestBody Map<String, String> map) {
		User user = new User();
		user.setName(map.get("name"));
		user.setSex(map.get("sex"));
		user.setTel(map.get("tel"));
		user.setEmail(map.get("email"));
		int status = mainService.addUser(user);
		return status;
	}
	
	@GetMapping("/get/user")
	public User getUser(@RequestParam("id") String id) {
		
		return mainService.getUser(Integer.parseInt(id));
	}
	
	@GetMapping("/delete/user/{id}")
	public int deleteUser(@PathVariable String id) {
		return mainService.deleteUser(Integer.parseInt(id));
	}
}

说明@RestController注解相当于@ResponseBody + @Controller合在一起的作用,所以不能返回一个页面,返回json格式的值(前后端分离-页面之间的调用在前台完成)。上面代码中每种请求的传参方式都不一样,看你的实际情况决定用那一种。

3.配置文件
找到application配置文件,修改后缀文件格式为.yml,不修改也行,但是写起来没有.yml格式的简洁。关于.yml文件格式的写法可自行百度,这里只强调两点:1.冒号后必须带一个空格;2.下一级必须比上一级要缩进一点。

server: 
   port: 9100
    
mybatis: 
    mapper-locations: classpath:mapper/*.xml
    type-aliases-package: com.seley.service.customer.entities
    
spring: 
  datasource:
    url: jdbc:mysql://localhost:3306/vsbtest?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

说明server.port设置端口号;mybatis.mapper-locations扫描映射文件;mybatis.type-aliases-package用来简化映射文件中实体类的写法(不用写全路径);spring.datasource用来配置数据库,需要注意一点的是必须配置时区serverTimezone=GMT%2B8,否则启动会出错。url中数据库名换成你自己的。

4.启动springboot
项目右键—>Run As—>Spring Boot App

5.测试
对了,MySQL数据库中得有表,有测试数据。(数据库要提前设计好)
建表:

-- Table "user" DDL

CREATE TABLE `user` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `sex` varchar(10) NOT NULL,
  `tel` varchar(50) NOT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

插入一条测试数据

INSERT INTO user( name, sex, tel, email )
                       VALUES
                       ( "kaikai","boy","123456789","345617523@qq.com" );

打开浏览器,地址栏输入:http://localhost:9100/get/users,回车,看能不能得到测试数据。

关于前端VUE在下一篇博客中分享

有问题的小伙伴欢迎评论



https://www.xamrdz.com/mobile/4sp1957438.html

相关文章: