zoukankan      html  css  js  c++  java
  • spring boot 整合MyBatis

    在学习java spring boot的时候使用MyBatis时一直出现问题, 现将详细demo代码记录如下:

    1.sql

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : MySQL
     Source Server Version : 80015
     Source Host           : localhost:3306
     Source Schema         : test
    
     Target Server Type    : MySQL
     Target Server Version : 80015
     File Encoding         : 65001
    
     Date: 20/12/2021 11:24:17
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for tb_user
    -- ----------------------------
    DROP TABLE IF EXISTS `tb_user`;
    CREATE TABLE `tb_user`  (
      `id` int(11) NOT NULL,
      `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of tb_user
    -- ----------------------------
    INSERT INTO `tb_user` VALUES (1, 'laowang', '112233');
    INSERT INTO `tb_user` VALUES (2, 'laoli', '123456');
    
    SET FOREIGN_KEY_CHECKS = 1;

    2. pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.1</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zhg.demo</groupId>
        <artifactId>mybatis</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>mybatis</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--web核心依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--mysql数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.0</version>
            </dependency>
            <!--Thymeleaf 启动器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    3.src/main/resources/application.yml

    server:
      port: 8182
    spring:
      thymeleaf:
        mode: HTML
        encoding: UTF-8
        content-type: text/html
        cache: false
        prefix: classpath:/templates
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/test
        username: root
        password: 123456
    mybatis:
      mapper-locations: classpath:mapper/*Mapper.xml
      type-aliases-package: com.zhg.demo.entity
      configuration:
        map-underscore-to-camel-case: true

    4. src/main/resources/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.zhg.demo.mapper.UserMapper">
        <select id="findAll" resultType="com.zhg.demo.entity.User">
            SELECT * FROM tb_user
        </select>
        <select id="findById" resultType="com.zhg.demo.entity.User">
            SELECT * FROM tb_user WHERE id = #{id}
        </select>
    </mapper>

    5.com.zhg.demo.entity.User

    package com.zhg.demo.entity;
    
    public class User {
        private Integer id;
        private String username;
        private String password;
    
        public User() {
    
        }
    
        public User(Integer id, String username, String password) {
            this.id = id;
            this.username = username;
            this.password = password;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    6.com.zhg.demo.mapper.UserMapper

    package com.zhg.demo.mapper;
    
    import com.zhg.demo.entity.User;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper//指定这是一个操作数据库的mapper
    public interface UserMapper {
        List<User> findAll();
        User findById(Integer id);
    }

    7.com.zhg.demo.service.UserService

    package com.zhg.demo.service;
    
    import com.zhg.demo.entity.User;
    
    import java.util.List;
    
    public interface UserService {
        List<User> findAll();
        User findById(Integer id);
    }

    8.com.zhg.demo.service.impl.UserServiceImpl

    package com.zhg.demo.service.impl;
    
    import com.zhg.demo.entity.User;
    import com.zhg.demo.mapper.UserMapper;
    import com.zhg.demo.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserMapper userMapper;
    
        @Override
        public List<User> findAll() {
            return userMapper.findAll();
        }
    
        @Override
        public User findById(Integer id) {
            return userMapper.findById(id);
        }
    }

    9.com.zhg.demo.controller.UserController

    package com.zhg.demo.controller;
    
    import com.zhg.demo.entity.User;
    import com.zhg.demo.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import java.util.List;
    
    @RestController
    @RequestMapping("user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        @RequestMapping("/findAll")
        public List<User> findAll() {
            return userService.findAll();
        }
    
        @ResponseBody
        @RequestMapping("/abc")
        public ModelAndView abc(HttpServletRequest request) {
            String paramName = request.getParameter("name");/*get/post参数*/
            request.getSession().setAttribute("login",1);
            Object session = request.getSession().getAttribute("login");
    
            /*查询表中的多条数据*/
            List<User> users = userService.findAll();
            String userName = users.get(0).getUsername();
    
            /*条件查询*/
            User userOne = userService.findById(1);
            String password = userOne.getPassword();
    
            ModelAndView mv = new ModelAndView();
            mv.addObject("name", session);
            mv.setViewName("/abc.html");
            return mv;
        }
    }

    10.src/main/resources/templates/abc.html

    <!DOCTYPE html>
    <!--导入thymeleaf的名称空间-->
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <!--th:text 为 Thymeleaf 属性,用于获取指定属性的值-->
    <h1 th:text="'欢迎来到'+${name}"></h1>
    <table>
        <tr th:each="m:${users}">
            <td th:text="${m.getUserName()}"></td>
        </tr>
    </table>
    </body>
    </html>

     11.目录结构图如下

     注意: application.yml 的配置内容严格控制缩进, 由于缩进问题影响时间大概为2天。

    If the copyright belongs to the longfei, please indicate the source!!!
  • 相关阅读:
    bootstrap中nav-fixed-top和nav-static-top的区别
    bootstrap aria
    pixi学习总结
    我的代码需要随时备份,并且保证最新版与别人协同开发?Git与Github一起用啊
    自己本地的代码,如何随时备份?随时找回上个备份?版本控制工具Git啊
    自己的代码,如何跟别人协同开发?用GitHub啊
    函数放到onload里面,在html里面执行函数会报错-----作用域和闭包相关问题
    使用CSS实现空心的向上向下的箭头
    两个input放一行不能对齐
    发现一个h5网站,爱果果
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/15710196.html
Copyright © 2011-2022 走看看