Spring boot integrates Mybatis + Thymeleaf to develop web (1)

**I have a lot of time at work recently, and then I learned about Spring boot myself, plus Mybatis, which are more commonly used in actual development, so this article will write about SpringBoot's integration of Mybatis.
1. Data preparation**

CREATE TABLE `bookbean` (
  `name` varchar(255) DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `price` varchar(255) DEFAULT NULL
) 


INSERT INTO `bookbean` VALUES ('张三', 'ZHANGSAN', '16');
INSERT INTO `bookbean` VALUES ('李四', 'LISI', '34');
INSERT INTO `bookbean` VALUES ('王五', 'WANGWU', '43');

Second, the introduction of dependencies

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mybatis.version>3.4.5</mybatis.version>
        <mybatis-spring.version>1.3.1</mybatis-spring.version>
        <mysql.version>6.0.6</mysql.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <!-- mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis-spring.version}</version>
        </dependency>

        <!-- mysql驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <!-- 数据源 -->
        <dependency>  
            <groupId>com.alibaba</groupId>  
            <artifactId>druid</artifactId>  
            <version>1.0.29</version>  
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

Third, the database configuration file

  The content of the project application.properties is as follows:

banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
#配置设置不同的信息名字获取不同的配置文件
#application-dev.properties:用于开发环境
#application-test.properties:用于测试环境
#application-prod.properties:用于生产环境
spring.profiles.active=dev

#spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。
#如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可
logging.config=classpath:logback-spring.xml

######数据库链接配置########
spring.datasource.url=jdbc\:mysql\://127.0.0.1\:3306/aa
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000

mybatis.mapperLocations=classpath:mybatis/mapper/*.xml
mybatis.config-location=classpath:mybatis/mybatis-config.xml

4. Code

Entity class BookBean.java

public class BookBean {
    private String name;
    private String author;
    private String price;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "BookBean [name=" + name + ", author=" + author + ", price="
                + price + "]";
    }
    public BookBean(String name, String author, String price) {
        super();
        this.name = name;
        this.author = author;
        this.price = price;
    }
    public BookBean() {
        // TODO Auto-generated constructor stub
    }

}

BookBeanMapper.java

package com.example.demo.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.example.demo.bean.BookBean;

@Mapper
public interface BookBeanMapper {

    /**
     * 集合
     * @return
     */
    public List<BookBean> findBookBeanInfo();

    /**
     * 添加
     * @param bookBean
     * @return
     */
    public int addBookBeanInfo(BookBean bookBean);

    /**
     * 删除
     * @param id
     * @return
     */
    public int delBookBeanInfo(String id);
}

BookBeanService.java

package com.example.demo.service;

import java.util.List;


import com.example.demo.bean.BookBean;


public interface BookBeanService {
    /**
     * 集合
     * @return
     */
    public List<BookBean> findBookBeanInfo();

    /**
     * 添加
     * @param bookBean
     * @return
     */
    public int addBookBeanInfo(BookBean bookBean);

    /**
     * 删除
     * @param id
     * @return
     */
    public int delBookBeanInfo(String id);
}

BookBeanServiceImpl.java

package com.example.demo.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.bean.BookBean;
import com.example.demo.mapper.BookBeanMapper;
import com.example.demo.service.BookBeanService;

@Service
public class BookBeanServiceImpl implements BookBeanService{

    @Autowired
    private BookBeanMapper bookBeanMapper;

    @Override
    public List<BookBean> findBookBeanInfo() {

        return bookBeanMapper.findBookBeanInfo();
    }

    @Override
    public int addBookBeanInfo(BookBean bookBean) {

        return bookBeanMapper.addBookBeanInfo(bookBean);
    }

    @Override
    public int delBookBeanInfo(String id) {

        return bookBeanMapper.delBookBeanInfo(id);
    }

}

TestController.java

package com.example.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.bean.BookBean;
import com.example.demo.service.BookBeanService;
import com.example.demo.util.JsonResult;

@RestController
@RequestMapping(value="/demo")
public class TestController {

    @Autowired
    private BookBean bookBean;

    @Autowired
    private BookBeanService bookBeanService;

    @RequestMapping(value="/helloworld",produces="text/plan;charset=UTF-8")
    public String helloworld() {
        System.out.println(bookBean.toString());
        return "helloworld-"+bookBean.getName()+"----"+bookBean.getAuthor()+"----"+bookBean.getPrice();
    }

    @GetMapping("/helloworld2")
    public String helloworld2() {
        return "helloworld2";
    }


    /**
     * 根据id删除用户
     * @param id
     * @return
     */
    @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
    public ResponseEntity<JsonResult> delete (@PathVariable(value = "id") String id){
        JsonResult r = new JsonResult();
        try {
            int ret = bookBeanService.delBookBeanInfo(id);
            if (ret < 0) {
                r.setResult(ret);
                r.setStatus("fail");
            } else {
                r.setResult(ret);
                r.setStatus("ok");
            }
        } catch (Exception e) {
            r.setResult(e.getClass().getName() + ":" + e.getMessage());
            r.setStatus("error");

            e.printStackTrace();
        }
        return ResponseEntity.ok(r);
    }



    /**
     * 查询
     * @return
     */
    @RequestMapping(value="/find")
    public ResponseEntity<JsonResult> add(){
        JsonResult r = new JsonResult();
        try {
            System.out.println(1);
            List<BookBean> findBookBeanInfo = bookBeanService.findBookBeanInfo();
            r.setResult(findBookBeanInfo);
            r.setStatus("ok");
        } catch (Exception e) {
            r.setResult(e.getClass().getName() + ":" + e.getMessage());
            r.setStatus("error");

            e.printStackTrace();
        }

        return ResponseEntity.ok(r);

    }

}

The JsonResult class is a general-purpose conversion json tool class as follows:

package com.example.demo.util;

/**
 * 通用json返回类
 * @author Administrator
 *
 */
public class JsonResult {
    private String status = null;

    private Object result = null;

    public JsonResult status(String status) {
        this.status = status;
        return this;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Object getResult() {
        return result;
    }

    public void setResult(Object result) {
        this.result = result;
    }


}

Directory Structure:

write picture description here

BookbeanMapper.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.example.demo.mapper.BookBeanMapper" >
    <resultMap id="bookBeanMap" type="bookBean" >
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="author" property="author" jdbcType="VARCHAR" />
        <result column="price" property="price" jdbcType="VARCHAR"/>
    </resultMap>

    <sql id="bookbean" >
        name,author,price
    </sql>

    <select id="findBookBeanInfo" resultMap="bookBeanMap">
        select <include refid="bookbean"/> from BOOKBEAN
    </select>

    <insert id="addBookBeanInfo" parameterType="bookBean">
        insert into BOOKBEAN(name,author,price) values(#{name},#{author},#{price})
    </insert>

    <delete id="delBookBeanInfo" parameterType="string">
        delete from BOOKBEAN where price = #{price} 
    </delete>

</mapper>

Then start DemoApplication.java, open the browser and enter http://localhost:8081/demo/find and the following figure will appear

write picture description here

Completion here shows that springboot has successfully integrated mybatis. If there is anything wrong, friends are welcome to make suggestions!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325806594&siteId=291194637