SpringBoot学习10:springboot整合mybatis

需求:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一个对数据库中的 t_user 表的 CRUD 的操作

1、创建maven项目,添加项目所需依赖

<!--springboot项目依赖的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <dependencies>
        <!--注入springboot启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--注入springboot对thymeleaf视图技术的支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--mybaits启动器,注入springboot对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>
        </dependency>
        <!-- 阿里巴巴druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
        <!-- jpa实体类规范 -->
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

2、在resource文件夹下添加application.properties全局配置文件

#数据库连接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot
spring.datasource.username=root
spring.datasource.password=duan
#数据库连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#配置mybatis中实体类xml配置文件中实体类所在文件夹,如果配置了,在xml配置文件中参数、返回值实体类可以不写包名
mybatis.type-aliases-package=com.bjsxt.pojo
#mapper接口xml文件所在位置
mybatis.mapper-locations=classpath:mapping/*.xml

3、数据库设计

创建数据库

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` bigint(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` smallint(3) DEFAULT NULL,
  `hobby` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

添加数据

INSERT INTO `t_user` VALUES (‘1‘, ‘张三‘, ‘22‘, ‘羽毛球‘);
INSERT INTO `t_user` VALUES (‘2‘, ‘李四‘, ‘20‘, ‘篮球‘);
INSERT INTO `t_user` VALUES (‘3‘, ‘王五‘, ‘24‘, ‘排球‘);

4、创建实体类User

package com.bjsxt.pojo;

import javax.persistence.*;

/**
 * Created by Administrator on 2019/2/10.
 */
@Entity
@Table(name = "t_user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    @Column(name = "hobby")
    private String hobby;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

5、创建mapper接口以及接口映射的配置文件

package com.bjsxt.mapper;

import com.bjsxt.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * Created by Administrator on 2019/2/10.
 */
public interface UserMapper {

    /**
     * 查询所有的用户
     * @return
     */
    List<User> selectAllUser();

    /**
     * 查询单个用户
     */
    User selectUserById(Integer id);

    /**
     * 添加用户
     */
    void addUser(User user);

    /**
     * 修改用户
     */
    void updateUser(User user);

    /**
     * 删除用户
     */
    void deleteUser(Integer id);

}
<?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.bjsxt.mapper.UserMapper">
    <select id="selectAllUser" resultType="User">
        select * from t_user;
    </select>

    <select id="selectUserById" parameterType="java.lang.Integer" resultType="User">
        select * from t_user where id=#{id};
    </select>

    <insert id="addUser" parameterType="User">
        insert into t_user(name,age,hobby) values(#{name},#{age},#{hobby});
    </insert>

    <update id="updateUser" parameterType="User">
        update t_user set name=#{name},age=#{age},hobby=#{hobby} where id=#{id};
    </update>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from t_user where id=#{id};
    </delete>
</mapper>

6、创建业务层

接口:

package com.bjsxt.service;

import com.bjsxt.pojo.User;

import java.util.List;

/**
 * Created by Administrator on 2019/2/10.
 */
public interface UserService {

    /**
     * 查询所有的用户
     * @return
     */
    List<User> selectAllUser();

    /**
     * 查询单个用户
     */
    User selectUserById(Integer id);

    /**
     * 添加用户
     */
    void addUser(User user);

    /**
     * 修改用户
     */
    void updateUser(User user);

    /**
     * 删除用户
     */
    void deleteUser(Integer id);

}

实现类

package com.bjsxt.service.impl;

        import com.bjsxt.mapper.UserMapper;
        import com.bjsxt.pojo.User;
        import com.bjsxt.service.UserService;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;
        import org.springframework.transaction.annotation.Transactional;

        import java.util.List;

/**
 * Created by Administrator on 2019/2/10.
 */
@Service
@Transactional //service层打开事务
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> selectAllUser() {
        return userMapper.selectAllUser();
    }

    @Override
    public User selectUserById(Integer id) {
        return userMapper.selectUserById(id);
    }

    @Override
    public void addUser(User user) {
        userMapper.addUser(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteUser(Integer id) {
        userMapper.deleteUser(id);
    }
}

7、创建controller

package com.bjsxt.controller;

import com.bjsxt.pojo.User;
import com.bjsxt.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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by Administrator on 2019/2/10.
 */
@Controller
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 去用户列表页面
     * @param model
     * @return
     */
    @RequestMapping("toUserList")
    public String toUserList(Model model){
        model.addAttribute("userList",userService.selectAllUser());
        return "user_list";
    }

    /**
     * 去用户编辑添加页面
     */
    @RequestMapping("toUserEdit")
    public String toUserEdit(HttpServletRequest request,Model model){
        String id=request.getParameter("id");
        if(null!=id&&!"".equals(id)){   //编辑
            User user=userService.selectUserById(Integer.parseInt(id));
            model.addAttribute("user",user);
        }
        return "user_edit";
    }
    /**
     * 用户添加或编辑
     */
    @RequestMapping(value = "userEdit",method = RequestMethod.POST)
    public String userEdit(HttpServletRequest request,User user){
        if(null!=user.getId()&&!"".equals(user.getId())){   //编辑
            userService.updateUser(user);
        }else{  //添加
            userService.addUser(user);
        }
        return "redirect:/user/toUserList";
    }

    /**
     * 用户删除
     */
    @RequestMapping("deleteUser")
    public String deleteUser(Integer id){
        userService.deleteUser(id);
        return "redirect:/user/toUserList";
    }

}

8、编写页面,视图层采用thymeleaf技术

用户列表页面user_list.html

<!DOCTYPE html >
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户列表</title>
</head>
<body>
    <div>
        <div><a href="toUserEdit">添加</a></div>
        <table>
            <tr>
                <th>用户id</th>
                <th>用户姓名</th>
                <th>用户年龄</th>
                <th>用户爱好</th>
                <th>操作</th>
            </tr>
            <tr th:each="user:${userList}">
                <td th:text="${user.id}"></td>
                <td th:text="${user.name}"></td>
                <td th:text="${user.age}"></td>
                <td th:text="${user.hobby}"></td>
                <td>
                    <a th:href="@{/user/toUserEdit(id=${user.id})}">编辑</a>
                    <a th:href="@{/user/deleteUser(id=${user.id})}">删除</a>
                </td>
            </tr>
        </table>
    </div>
</body>
</html>

用户添加编辑页面user_edit.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户编辑添加</title>
</head>
<body>
    <form action="/user/userEdit" 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="text" name="hobby" th:field="${user.hobby}"><br />
        <input type="submit" value="提交">
    </form>
</body>
</html>

9、编写启动类

package com.bjsxt;

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

/**
 * Created by Administrator on 2019/2/10.
 */
@SpringBootApplication
@MapperScan("com.bjsxt.mapper") //指定mapper接口所在的位置
public class App {

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

在浏览器中访问即可http://localhost:8080/user/toUserList

10、最后目录结构

原文地址:https://www.cnblogs.com/duanrantao/p/10361311.html

时间: 2024-11-05 11:58:17

SpringBoot学习10:springboot整合mybatis的相关文章

Springboot 2.0.4 整合Mybatis出现异常Property &#39;sqlSessionFactory&#39; or &#39;sqlSessionTemplate&#39; are required

在使用Springboot 2.0.4 整合Mybatis的时候出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required,然后各种找日志百度,网上给了一种解决方法: 版本太高,使用手动注入sqlSessionFactory,然后用dao的实习类继承,因为我的项目没有dao 的实现类,直接是interface+mapper文件,所以直接忽略了,没有试过,想试一下可以试一下 阅读博客点这里(随手百度的):这里是传送门

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

SpringBoot学习- 8、整合Shiro

Shiro是什么,引自百度百科:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 关于Shiro网上讲的很多,以下代码是来自网上几篇博客文章的代码集成, 下面是集成步骤 1.pom.xml添加以下内容 <dependency> <groupId>org.apache.shiro</groupId> <

springboot学习笔记-3 整合redis&amp;mongodb

一.整合redis 1.1 建立实体类 @Entity @Table(name="user") public class User implements Serializable { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String name; @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private

SpringBoot(十)-- 整合MyBatis

1.pom.xml 配置maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> 2.一定要在启动的地方加上@MapperScan("com.xsjt

SpringBoot学习- 4、整合JWT

1.Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景.JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密. 2.pom.xml增加如下代码来添加JWT依赖包 <!-- https://mvnreposit

SpringBoot学习(四)--&gt;SpringBoot快速入门,开山篇

SpringBoot是伴随着Spring4.0诞生的,旨在简化开发. SpringBoot官方文档:http://spring.io/projects/spring-boot 写个示例:Hello SpringBoot 1.创建Maven工程 工程结构如下: 2.配置pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem

SpringBoot学习之SpringBoot执行器

在以往的分布式开发当中,各个服务节点的监控必不可少.监控包含有很多方面,比如说:内存占用情况,节点是否健康等.在spring-boot会给我们提供相关资源监控叫做spring-boot-actuator, 通过执行器可以帮我管理和监控生产环境下的应用服务. 一.添加SpringBoot执行器的依赖 添加gradle配置依赖: dependencies { compile('org.springframework.boot:spring-boot-starter-actuator') } 二.关于

SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 2.mybatis特点 1)sql语句与代码分离,存放于xml配置文件中,方便管理 2)用逻辑标签