使用Springboot+Thymeleaf+Mybatis实现对Mysql数据库的增删改查以及分页查询

使用Springboot+Thymeleaf+Mybatis实现对Mysql数据库的增删改查以及分页查询,第1张

使用Springboot+Thymeleaf+Mybatis实现对Mysql数据库的增删改查以及分页查询

文章目录

一.使用IDEA创建一个spring项目

二.建立项目结构

三.创建数据库

 四.导入pom依赖

五.编写pojo实体类

六.编写dao层

七.编写service层

八.编写controller层

九.编写UserMapper.xml映射文件

.十.编写yml配置信息

十一.编写前端页面

十二.测试


一.使用IDEA创建一个spring项目

 

二.建立项目结构

dao层用来编写sql方法的接口,service层的方法接口和方法实现类,controll控制层。pojo实体类,其中query包中存储和分页相关的实体类。User类存储数据表的实体类。

在resources目录下创建UserMapper.xml编写sql方法的具体代码。templates下创建editUser.html为数据编辑页面,index.html为主页即数据展示页面。创建application.yml编写连接配置信息。

三.创建数据库

        ----我们创建一个mybatis数据库,在数据库下创建user表,包含id,name,pwd属性。我这里用的是Navicat可视化Mysql工具直接创建。

 

        ----也可以通过sql语句cmd中创建。创建好数据库mybatis后,输入创建user代码。在idea中可以使用database测试和数据库的连通性。

CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(55)  NOT NULL,
  `pwd` varchar(55)  NOT NULL,
  PRIMARY KEY (`id`)
)
 四.导入pom依赖

        ----如果依赖爆红说明本地没有这个依赖,需要去MAVEN仓库下载依赖手动导入,手动导入依赖方法如何手动在pom导入依赖,解决Dependency not found问题_阿弈哥的博客-CSDN博客



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    wuhobin
    springboot-mybatis
    0.0.1-SNAPSHOT
    springboot-mybatis
    Demo project for Spring Boot
    
        1.8
    
    
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.3
        
        
        
            mysql
            mysql-connector-java
        
        
        
            com.alibaba
            druid
            1.2.8
        
        
        
            org.projectlombok
            lombok
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.4.1
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


五.编写pojo实体类

        ----创建query包下,在包下编写UserQuery实体类,用于存储分页的相关实体属性

package wuhobin.pojo.query;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data       //使用data注解省去set和get方法
@AllArgsConstructor
@NoArgsConstructor
public class UserQuery {
    private Integer pageNum = 1;   // 当前的页码
    private Integer pageSize  = 2;   //每一页所显示的数量
    private String name;    // 根据用户查询
}

        ----编写User实体类,用于存储数据表的字段属性

package wuhobin.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data        //使用data注解省去get与set方法
@AllArgsConstructor        //自动构建有参构造方法
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private String pwd;
    private String perm;
}
六.编写dao层

        ----UserDao编写对数据库 *** 作需要用到的方法接口,需要添加@Mapper注解,才能在UserMapper.xml对接口方法进行sql语句具体编写

package wuhobin.dao;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import wuhobin.pojo.User;
import wuhobin.pojo.query.UserQuery;
import java.util.List;

@Mapper  // 告诉springboot这是一个mybatis的mapepr类
@Repository   // 将userdao交由spring容齐管理
public interface UserDao {
    // 查询所有用户
    public List listUser();

    // 根据id查询用户
    public User queryUserById(Integer id);

    // 根据用户名来查询用户  并分页展示
    public List listUserByName(UserQuery userQuery);

    //根据id删除用户
    public int deleteUserById(Integer id);

    // 修改用户
    public int updateUser(User user);

    // 新增用户
    public int addUser(User user);
}

七.编写service层

        ----编写UserService方法接口

package wuhobin.service;

import com.github.pagehelper.PageInfo;
import wuhobin.pojo.User;
import wuhobin.pojo.query.UserQuery;

import java.util.List;

public interface UserService {
    // 查询所有用户
    public List listUser();

    // 根据用户名来查询用户  并分页展示
    public PageInfo listUserByName(UserQuery userQuery);

    //根据id删除用户
    public boolean deleteUserById(Integer id);

    // 根据id查询用户
    public User queryUserById(Integer id);

    // 修改用户
    public boolean updateUser(User user);

    // 新增用户
    public boolean addUser(User user);

}

        ----编写UserServiceImpl方法的实现类

package wuhobin.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import wuhobin.dao.UserDao;
import wuhobin.pojo.User;
import wuhobin.pojo.query.UserQuery;

import java.util.List;

@Service   //  交由spring容齐管理
public class UserServiceImpl implements UserService{
    @Autowired
    private UserDao userDao;

    @Override
    public List listUser() {
        return userDao.listUser();
    }

    @Override
    public PageInfo listUserByName(UserQuery userQuery) {
        PageHelper.startPage(userQuery.getPageNum(),userQuery.getPageSize());
        return new PageInfo(userDao.listUserByName(userQuery));
    }

    @Override
    public boolean deleteUserById(Integer id) {
        int i = userDao.deleteUserById(id);
        if(i > 0){              //判断是否成功删除用户
            return true;
        }else {
            return false;
        }
    }

    @Override
    public User queryUserById(Integer id) {
        return userDao.queryUserById(id);
    }

    @Override
    public boolean updateUser(User user) {
        int i = userDao.updateUser(user);
        if(i > 0){          //判断是否成功编辑用户
            return true;
        }else {
            return false;
        }
    }

    @Override
    public boolean addUser(User user) {
        return userDao.addUser(user) > 0 ? true : false ;       //判断是否成功添加用户
    }
}
八.编写controller层
package wuhobin.controller;

import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import wuhobin.pojo.User;
import wuhobin.pojo.query.UserQuery;
import wuhobin.service.UserService;

@Controller
public class    UserController {
    @Autowired      //自动注入
    private UserService userService;

    @GetMapping("/")    //进入首页,首页展示数据库数据
    public String index(Model model, UserQuery userQuery){
        PageInfo userPageInfo = userService.listUserByName(userQuery);
        model.addAttribute("page",userPageInfo);
        return "index";
    }

    @PostMapping("/")
    public String listUserByName(Model model,UserQuery userQuery){
        PageInfo userPageInfo = userService.listUserByName(userQuery);
        model.addAttribute("page",userPageInfo);
        return "index";
    }

    @GetMapping("/delete/{id}")     //根据id删除数据,并在前端展示删除结果反馈
    public String delete(@PathVariable("id") Integer id, RedirectAttributes attributes){
        boolean b = userService.deleteUserById(id);
        if(b){
            attributes.addFlashAttribute("message","删除用户成功");
            return "redirect:/";
        }else {
            attributes.addFlashAttribute("message","删除用户失败");
            return "redirect:/";
        }
    }


    @GetMapping("/edit/{id}")       //根据id进入数据编辑界面editUser
   public String toEdit(@PathVariable Integer id,Model model){
        model.addAttribute("user",userService.queryUserById(id));
        return "editUser";
   }


   @PostMapping("/edit")        //编辑修改数据信息,并在前端展示修改结果是否成功反馈
   public String edit(User user,RedirectAttributes attributes){
       UserQuery userQuery = new UserQuery();
       Integer id = user.getId();
      userQuery.setName(user.getName());
       PageInfo userPageInfo = userService.listUserByName(userQuery);
        if(id != null){
            if(userPageInfo.getSize() == 0){
                boolean b = userService.updateUser(user);
                if(b){
                    attributes.addFlashAttribute("message"," 更新用户成功");
                    return "redirect:/";
                }else {
                    attributes.addFlashAttribute("message","更新用户失败");
                    return "redirect:/";
                }
            }else {
                attributes.addFlashAttribute("message","该用户名已存在");
                return "redirect:/edit/"+user.getId();
            }
        }else {
            if(userPageInfo.getSize() == 0){
                boolean b = userService.addUser(user);
                if(b){
                    attributes.addFlashAttribute("message"," 新增用户成功");
                    return "redirect:/";
                }else {
                    attributes.addFlashAttribute("message","新增用户失败");
                    return "redirect:/";
                }
            }else {
                attributes.addFlashAttribute("message","该用户名已存在");
                return "redirect:/";
            }
        }
   }

}
九.编写UserMapper.xml映射文件

        ----对UserDao接口中的方法编写具体sql方法




    
        select *
        from mybatis.user
        
            
                and `name` like concat('%',#{name},'%')
            
        
    

    
        delete from mybatis.user where id=#{id}
    

    


    
        update mybatis.user
        set name = #{name},pwd = #{pwd}
        where id = #{id}
    

    
        insert into mybatis.user(name, pwd) values (#{name},#{pwd})
    
.十.编写yml配置信息
server:
  port: 8080

# 数据库数据源
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    username: root    # 改为自己的数据库名称
    password: 123456    #改为自己的数据库密码
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  type-aliases-package: wuhobin.pojo   #   别名
  mapper-locations: classpath:/mybatis/*.xml   #   xml文件

logging:
  file:
    name: log/log.log
  level:
    root: info
    wuhobin: debug
十一.编写前端页面

        ----将前端页面放置在templates包下,下面附上代码

        ----editUser.html




    
    修改用户
    



    

    
        
        提示:
        

        ----index.html




    
    首页
    



    
        
        新增
    
    
        
        id
            姓名
            密码
             *** 作
        
        
                          
            James
            24
            Engineer
            
                编辑
                删除
            
        
        
    
    
        
            
            
                
                    上一页
                
                
                    第
                    2
                    页/共
                    4
                    页
                    共
                    29
                    条
                
                
                    
                
                  
                
                    下一页
                
            
            
        
              
    
        
        提示:
        

十二.测试

        ----在浏览器中输入locahost://8080,结果如下

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5721823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存