zoukankan      html  css  js  c++  java
  • Spring boot 整合 Mybatis + Thymeleaf开发web(一)

      最近工作上时间有点多,然后自己就学习了一下Spring boot,外加上Mybatis,在实际开发中都是比较常用的,所以这篇写一下SpringBoot整合Mybatis。

    一、数据准备

      

    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');

    二、引入依赖

    <?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>

    三、数据库配置文件

      项目application.properties内容如下

    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

    四、代码

    实体类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);
            
        }
        
    }

    JsonResult类是一个通用转json的工具类  如下:

    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;
        }
        
        
    }

    目录结构:

    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>

    然后启动DemoApplication.java 打开浏览器 输入http://localhost:8081/demo/find 就出现下图

    完成到这里说明springboot整合mybatis就成功了,有什么不对的地方欢迎朋友们提出建议!

    版权声明:本文为博主原创文章,未经博主允许不得转载。 

     http://www.cnblogs.com/tangyin/p/8862687.html

  • 相关阅读:
    Mongodb
    Java原子类
    volatile
    uniapp输入空格
    看不见的的html
    小程序隐藏scroll-view滚动条的方法
    云函数调用云函数 openid不存在
    vue路由中 Navigating to current location ("/xxx") is not allowed
    Vue: 单页面应用如何保持登录状态
    letter-spacing
  • 原文地址:https://www.cnblogs.com/tangyin/p/8862687.html
Copyright © 2011-2022 走看看