zoukankan      html  css  js  c++  java
  • spring boot-14.集成MyBatis

    1.如何使用注解版Mybatis?

    (1)引入mybatis ,druid,Mysql 的依赖,环境搭建可以参考第13篇的内容

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.8</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>

    (2)使用@Mapper注解。如果不想使用注解在每个接口上去标记,那么可以在主类上使用@MapperScan(value = "com.springboot.dao") 批量扫描接口

    package com.springboot.dao;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    import com.springboot.entity.StockCode;
    
    @Mapper
    public interface Stock {
        
        @Select("select * from stock_code where id = #{id}")
        public StockCode getStockByID(Integer id);
            
        
    }

    (3)这下Mybatis 的整合就完成,直接在controller中测试就行了

    package com.springboot.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.springboot.dao.Stock;
    import com.springboot.dao.StockCodeMapper;
    import com.springboot.entity.StockCode;
    
    
    @RestController
    public class StockController {
        @Autowired
        private Stock stockmapper;
        
        @GetMapping("/getStock/{id}")
        public StockCode getStockByID(@PathVariable("id")Integer id) {
            StockCode stock = stockmapper.getStockByID(id);
            return stock;
        }
    }

    这时我们会发现下面的情况,实体的属性的值为空,这时因为我们的数据字段单词中间是有下划线的,而实体是没有的,所以导致无法映射。

    解决办法是:开启mybatis 的驼峰写法,在全局配置文件中添加一下配置即可

    2.配置文件版集成MyBatis

    (1)编写Mybatis 全局配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!--开启驼峰命名法  -->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
    </configuration>

    (2)编写Mybatis sql映射文件

    (3)在全局配置文件声明mybatis 配置文件的位置和sql映射文件的位置

    mybatis:
      # 指定全局配置文件位置
      config-location: classpath:mybatis-config.xml
      # 指定sql映射文件位置
      mapper-locations: classpath:mapper/*.xml

    (4)这样mybatis 已经集成完了,我们可以测试了

    package com.springboot.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.springboot.dao.Stock;
    import com.springboot.dao.StockCodeMapper;
    import com.springboot.entity.StockCode;
    
    
    @RestController
    public class StockController {
        
        
        @Autowired
        StockCodeMapper stockCodeMapper;
        
        @GetMapping("/getStock/{id}")
        public StockCode getStockByID(@PathVariable("id")Integer id) {
            StockCode stock = stockCodeMapper.selectByPrimaryKey(id);
            return stock;
        }
    }
  • 相关阅读:
    Jenkins持续集成
    爬豆瓣保存到sqlite3
    爬豆瓣保存到Excel
    sqlite3数据库的增删查改
    用pandas和matplotlib对用户消费行为分析
    TCP请求
    fastjson
    断言
    将结果写入文件
    加解密
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/9528173.html
Copyright © 2011-2022 走看看