springboot整合mybaits, 实现crud操作(全) springboot的持久化

157 篇文章 16 订阅

一.项目功能描述

springboot项目,通过mybaits实现crud操作。新建项目:04-spt-mvc-persistence-crud

1.1 pom文件

<!-- springBoot的启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.0.1.RELEASE</version>
    </dependency>
    <!-- web启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
      <version>2.0.1.RELEASE</version>
    </dependency>
    <!-- Mybatis启动器 -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.1.1</version>
    </dependency>
    <!-- mysql数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.3</version>
    </dependency>
    <!-- druid数据库连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>

1.2 controller

package com.ljf.spring.boot.demo.persistence.controller;

import com.ljf.spring.boot.demo.persistence.model.Users;
import com.ljf.spring.boot.demo.persistence.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * @ClassName: UserController
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2020/07/29 15:45:36
 * @Version: V1.0
 **/
@Controller
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService usersService;

    /**
     * 页面跳转
     */
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page){
        System.out.println("进来了!!!"+page);
        return page;
    }

    /**
     * 添加用户
     */
    @RequestMapping("/addUser")
    public String addUser(Users users){
        System.out.println("users:"+users.getName());
        this.usersService.addUser(users);
        return "ok";
    }

    /**
     * 查询全部用户
     */
    @RequestMapping("/findUserAll")
    public String findUserAll(Model model){
        List<Users> list = this.usersService.findUserAll();
        model.addAttribute("list", list);
        return "showUsers";
    }
    /**
     * 根据用户id查询用户
     */
    @RequestMapping("/findUserById")
    public String findUserById(Integer id,Model model){
        Users user = this.usersService.findUserById(id);
        model.addAttribute("user", user);
        System.out.println("update:"+user);
        return "updateUser";
    }
    /**
     * 更新用户
     */
    @RequestMapping("/editUser")
    public String editUser(Users users){
        this.usersService.updateUser(users);
        return "ok";
    }
    /**
     * 删除用户
     */
    @RequestMapping("/delUser")
    public String delUser(Integer id){
        this.usersService.deleteUserById(id);
        return "redirect:/users/findUserAll"; //重定向页面
    }

}

1.3 service

package com.ljf.spring.boot.demo.persistence.service;

import com.ljf.spring.boot.demo.persistence.model.Users;

import java.util.List;

public interface UserService {
    void addUser(Users users);
    List<Users> findUserAll();
    Users findUserById(Integer id);
    void updateUser(Users users);
    void deleteUserById(Integer id);
}





package com.ljf.spring.boot.demo.persistence.service.impl;

import com.ljf.spring.boot.demo.persistence.dao.UsersMapper;
import com.ljf.spring.boot.demo.persistence.model.Users;
import com.ljf.spring.boot.demo.persistence.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @ClassName: UserServiceImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2020/07/29 17:16:59
 * @Version: V1.0
 **/
@Service
@Transactional
public class UserServiceImpl  implements UserService {
    @Autowired
    private UsersMapper usersMapper;
    @Override
    public void addUser(Users users) {
        usersMapper.insertUser(users);
    }
    @Override
    public List<Users> findUserAll() {
        return this.usersMapper.selectUsersAll();
    }

    @Override
    public Users findUserById(Integer id) {
        return this.usersMapper.selectUsersById(id);
    }
    @Override
    public void updateUser(Users users) {
        this.usersMapper.updateUser(users);
    }
    @Override
    public void deleteUserById(Integer id) {
        this.usersMapper.deleteUserById(id);
    }
}

1.4 dao

package com.ljf.spring.boot.demo.persistence.dao;


import com.ljf.spring.boot.demo.persistence.model.Users;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UsersMapper {
	
	void insertUser(Users users);
	List<Users> selectUsersAll();
	Users selectUsersById(Integer id);
	void updateUser(Users users);
	void deleteUserById(Integer id);

}

1.5 model

package com.ljf.spring.boot.demo.persistence.model;

/**
 * @ClassName: Users
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2020/07/29 15:54:01
 * @Version: V1.0
 **/
public class Users
{
    private Integer id;
    private String name;
    private Integer  age;
    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 Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

1.6 启动类

package com.ljf.spring.boot.demo.persistence;

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

/**
 * Hello world!
 *
 */
@SpringBootApplication
@MapperScan("com.ljf.spring.boot.demo.persistence.dao") //@MapperScan 用户扫描MyBatis的Mapper
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class, args);
        System.out.println("启动完成!!!");
    }
}

1.7 资源配置文件

1.usersMpaper的内容:

<?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.ljf.spring.boot.demo.persistence.dao.UsersMapper" >
<!-- 添加信息 -->
  <insert id="insertUser" parameterType="com.ljf.spring.boot.demo.persistence.model.Users">
     insert into tb_users(name,age) values(#{name,jdbcType=VARCHAR},#{age,jdbcType=BIGINT})
</insert>
 <!-- 查询用户信息 -->
    <select id="selectUsersAll" resultType="com.ljf.spring.boot.demo.persistence.model.Users">
		select id,name,age from tb_users
	</select>
    <!--通过id查询信息 -->
    <select id="selectUsersById" resultType="com.ljf.spring.boot.demo.persistence.model.Users">
		select id,name,age from tb_users where id = #{value}
	</select>
    <!-- 通过id修改 -->
    <update id="updateUser" parameterType="com.ljf.spring.boot.demo.persistence.model.Users">
		update tb_users set name=#{name} ,age=#{age} where id=#{id}
	</update>
    <!-- 删除数据 -->
    <delete id="deleteUserById">
		delete from tb_users where id = #{value}
	</delete>
</mapper>

2.applicaton:

server:
  port: 8081
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test_db
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.ljf.spring.boot.demo.persistence.model
logging:
  level:
    com.ljf.spring.boot.demo.persistence.dao: debug

3.sql文件:

CREATE TABLE `tb_users` (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 4.input.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
	
	<form th:action="@{/users/addUser}" method="post">
		用户姓名:<input type="text" name="name"/><br/>
		用户年龄:<input type="text" name="age"/><br/>
		<input type="submit" value="确定"/><br/>
	</form>
</body>
</html>

5.showpage.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>展示用户数据</title>
</head>
<body>
	<table border="1" style="width:300px;">
		<tr>
			<th>用户ID</th>
			<th>用户姓名</th>
			<th>用户年龄</th>
		</tr>
		<tr th:each="user : ${list}">
			<td th:text="${user.id}"></td>
			<td th:text="${user.name}"></td>
			<td th:text="${user.age}"></td>
		</tr>
	</table>
</body>
</html>

6.updateUser.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form th:action="@{/users/editUser}" method="post">
			<input type="hidden" name="id" th:field="${user.id}"/>
			用户姓名:<input type="text" name="name" th:field="${user.name}"/><br/>
			用户年龄:<input type="text" name="age" th:field="${user.age}"/><br/>
			<input type="submit" value="确定"/><br/>
	</form>
</body>
</html>

7.ok.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作提示页面</title>
</head>
<body>
	操作成功!!!
</body>
</html>

Spring Boot是一个快速开发框架,MyBatis是一款优秀的ORM框架,结合两者可以轻松实现分页查询。下面是一个简单的Java代码示例,用于实现分页查询: 1. 首先,在pom.xml文件中添加MyBatis和PageHelper的依赖: ```xml <!-- MyBatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- PageHelper依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> ``` 2. 在application.yml文件中配置MyBatis和PageHelper: ```yml mybatis: mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to-camel-case: true pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql ``` 3. 在DAO层定义分页查询接口: ```java public interface UserDao { List<User> findUsersByPage(int pageNum, int pageSize); } ``` 4. 在Mapper XML文件中定义SQL语句: ```xml <select id="findUsersByPage" resultType="User"> select * from user </select> ``` 5. 在Service层实现分页查询方法: ```java @Service public class UserService { @Autowired private UserDao userDao; public PageInfo<User> findUsersByPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userDao.findUsersByPage(pageNum, pageSize); return new PageInfo<>(userList); } } ``` 6. 在Controller层调用Service方法: ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public PageInfo<User> getUsers(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) { return userService.findUsersByPage(pageNum, pageSize); } } ``` 以上代码使用了PageHelper进行分页操作,最终将分页信息封装在了PageInfo对象中返回给调用者。你可以根据自己的实际情况进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值