废话不多说,我们直接进入正题,基于springboot整合mybatis实现后台管理的小demo,在这里我用的编辑器是IDEA(最近比较火嘛,也来跟下风,嘻嘻)
第一步:打开idea编辑器,初始化一个Springboot项目:File---New---Preject---Spring Initializr,如下图:
按照规范填写好包名和项目名(这里就不做过多介绍),添加Springboot核心配置文件Application.yml
这里贴出相应的目录结构:
Application.yml配置文件参数如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
#配置mybatis
mybatis:
typeAliasesPackage: com.fly.pojo
mapper-locations: classpath:mapper/*.xml
#配置mapper
mapper:
not-empty: false
identity: MYSQL
#配置Tomcat,配置80,可在浏览器访问项目时不用加端口号(默认端口8080)
server:
port: 80
第二步:创建实体类(User.java)并创建对应数据库user,便于演示,就只写了3个字段:
package com.fly.pojo;
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
数据库截图:
第三步:编写对应的控制层(Controller),业务逻辑层(Service),数据访问层(Mapper)相关代码,因为涉及到的接口方法很少,这里就简单贴出代码:
Controller代码如下(UserController.java):
package com.fly.controller;
import com.fly.pojo.User;
import com.fly.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
public class UserController {
@Resource
private UserService userService;
//第一种方式对应的Controller
@GetMapping(value = "/listUser")
@ResponseBody
public List<User> listAll() {
return userService.listAll();
}
//第二种方式对应的Controller
@PostMapping(value = "/saveUser")
@ResponseBody
public String saveUser(HttpServletRequest request) {
User user = new User();
user.setName(request.getParameter("username"));
// user.setCreateDate(new Date());
return userService.saveUser(user)==1?"SUCCESS":"FAIL";
}
//第三种方式对应的Controller
@GetMapping(value = "/delUser")
@ResponseBody
public String delUser(HttpServletRequest request) {
int id = Integer.parseInt(request.getParameter("id"));
return userService.delUser(id)==1?"SUCCESS":"FAIL";
}
//跳转到主页
@GetMapping(value = "index")
public String index(){
return "index";
}
//跳转到登录页面
@GetMapping(value = "login")
public String login(){
return "login";
}
}
Service接口及实现类:
Service接口(UserService.java):
package com.fly.service;
import com.fly.pojo.User;
import java.util.List;
public interface UserService {
//第一种方式对应的Service
public List<User> listAll();
//第二种方式对应的Service
public int saveUser(User user);
//第三种方式对应的Service,通用mapper,直接调用现成的增删改查sql
public int delUser(int id) ;
}
实现类(UserServiceImpl.java):
package com.fly.service.impl;
import com.fly.mapper.UserMapper;
import com.fly.pojo.User;
import com.fly.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
//第一种方式对应的Service
public List<User> listAll() {
return userMapper.selectAll();
}
//第二种方式对应的Service
public int saveUser(User user) {
return userMapper.save(user);
}
//第三种方式对应的Service,通用mapper,直接调用现成的增删改查sql
public int delUser(int id) {
return userMapper.deleteByPrimaryKey(id);
}
}
数据访问层Mapper接口(UserMapper.java):
package com.fly.mapper;
import com.fly.pojo.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
//第一种方式,注解sql,方便,但维护性略差
@Select("select * from user")
List<User> selectAll();
//第二种方式,xml方式,易维护
int save(User user);
int deleteByPrimaryKey(int id);
//第三种方式:通用mapper,本身提供了很多现成的增删改查sql,方法不在文件中体现;例如:int deleteByPrimaryKey()
}
第四步:编写对应的Mapper.xml映射文件,便于访问数据库(UserMpper.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.fly.mapper.UserMapper">
<!--第一种方式,注解sql在方法上-->
<!--第二种方式对应的sql-->
<insert id="save" parameterType="com.fly.pojo.User" >
insert into user (`name`,age)
values (#{name}, #{age})
</insert>
<!--第三种方式,是通用mapper现成的增删改查sql,不用在文件中体现-->
</mapper>
至此,所有业务逻辑代码都写完了,为了便于展现效果,我就简单写了一个index.jsp页面:
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加页面</title>
</head>
<body>
<form action="saveUser" method="post">
姓名:<input type="text" name="username"/> <br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="添加"/>
</form>
</body>
</html>
第五步:启动Springboot启动类:
访问主页面index.jsp:
如果添加成功会返回Success
我们再来刷新数据库,会发现成功添加一条记录
至此,我们的demo已经成功打通前端和后台,今天主要简单列出最最简单的demo代码,后续会在此基础上添加更多新功能