springBoot详细讲解使用mybaties案例

首先创建springBoot项目,jdk选择1.8

然后倒入mybaties的相关依赖

我们用的springBoot,当然spring全家桶里面含有mybaties,所以我们直接使用升级版的mybaties-plus。

引入这3个

lombok省的我每次创建对象,都需要get、set方法,以及toString

(IDEA里面也要安装lombok插件-》file->setting->plugin->搜索lombok安装,完后重启idea,这样lombok在idea中不报错)

mybatis-plus,mybaties的相关jar

mysql-connector-java 基本的jdbc驱动链接mysql,mybatis也要依赖他

	<properties>
		<java.version>1.8</java.version>
		<mybatis-plus.version>3.4.2</mybatis-plus.version>
	</properties>
    <dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>${mybatis-plus.version}</version>
	</dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.4</version>
			<scope>provided</scope>
		</dependency>

然后像我这样,假设我们要搭建一个非常2的大工程,建立这几个目录和文件

controller->TestController.java(class)

mapper->TestMapper.java(interface)

service->impl->TestServiceImpl.java(class)

service->TestService.java(interface)

resources->mapper->TestMapper.xml(映射xml)

接下来我们需要一个SqlSessionFactory,去解析一个个sql.xml。

而sqlSessionFactory,由SqlSessionFactoryBuilder 构建,构建一个SqlSessionFactoryBuilder ,需要链接mysql的账号密码地址。所以要读取你的账号密码,那在resource目录下创建一个xml用于他去读取。

我在resources下的mapper里面创建一个mybaties-config.xml

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="192.168.19.88"/>
                <property name="username" value="m11"/>
                <property name="password" value="m11@2022"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/TestMapper.xml"/>
    </mappers>
</configuration>

创建一个domain包,用来与mysql做相关映射,我在里面创建了一个实体类,与数据库做映射

@Data的就是我第一次导入的那个包,能够自动通过@Data注解,生成这个实体类的get、set方法以及toString方法。

package com.example.demo.domain;
import lombok.Data;
@Data
public class BZGG {
    String req_date;
    String stock_code;
    String stock_name;
    double fNextIncrease;
    double fNextAvgIncrease;
    String updatetime;
    public BZGG(String req_date, String stock_code, String stock_name, double fNextIncrease, double fNextAvgIncrease, String updatetime) {
        this.req_date = req_date;
        this.stock_code = stock_code;
        this.stock_name = stock_name;
        this.fNextIncrease = fNextIncrease;
        this.fNextAvgIncrease = fNextAvgIncrease;
        this.updatetime = updatetime;
    }
    public BZGG() {
    }
}

在mapper中的TestMapper中编写一个地址,并且加上Mapper映射

package com.example.demo.mapper;
import com.example.demo.domain.BZGG;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TestMapper {
    List<BZGG> getBZGGonTime(String req_date);
}

mybaties的代码流程图

resources中的sql配置(TestMapper.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.TestMapper">
    <select id="getBZGGonTime" resultType="com.example.demo.domain.BZGG">
        select * from   db_guoyuan.t_longhubang_stock_bzgg where req_date = #{req_date}
    </select>
</mapper>

controller层代码(你到时候可以自己分离service),为了突出mybaties暂时写到一起了

package com.example.demo.controller;
import com.example.demo.domain.BZGG;
import com.example.demo.mapper.TestMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
@RestController
public class TestController {
    @RequestMapping(value = "/Test", method = RequestMethod.GET)
    @ResponseBody
    public String getDemo(@RequestParam("num") int i) {
        String resource = "mapper/mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        TestMapper mapper = sqlSession.getMapper(TestMapper.class);
        List<BZGG> bzgGonTime = mapper.getBZGGonTime("2022-04-08");
        return bzgGonTime.toString();
    }
}

另外SpringApplication启动类,因为导入了mybaties,所以要启动时加载某个类,否则会出现url找不到等错误。

将@springBootApplication改成下面的

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class })
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
//在启动类的@SpringBootApplication加上
//避免冲突,加入exclude
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class })
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

测试:

到此这篇关于springBoot详细讲解使用mybaties案例的文章就介绍到这了,更多相关springBoot mybaties内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot+WebMagic+MyBaties实现爬虫和数据入库的示例

    目录 创建数据库: 新建SpringBoot项目: 1.配置依赖pom.xml 2.创建CmsContentPO.java 3.创建CrawlerMapper.java 4.配置映射文件CrawlerMapper.xml 5.配置application.properties 6.创建ArticlePageProcessor.java 7.创建ArticlePipeline.java 8.创建ArticleTask.java 9.修改Application 10.执行application,开始抓

  • springBoot详细讲解使用mybaties案例

    首先创建springBoot项目,jdk选择1.8 然后倒入mybaties的相关依赖 我们用的springBoot,当然spring全家桶里面含有mybaties,所以我们直接使用升级版的mybaties-plus. 引入这3个 lombok省的我每次创建对象,都需要get.set方法,以及toString (IDEA里面也要安装lombok插件->file->setting->plugin->搜索lombok安装,完后重启idea,这样lombok在idea中不报错) myba

  • SpringBoot详细讲解通过自定义classloader加密保护class文件

    目录 背景 maven插件加密 注意事项 自定义classloader 隐藏classloader 被保护class手动加壳 总结 背景 最近针对公司框架进行关键业务代码进行加密处理,防止通过jd-gui等反编译工具能够轻松还原工程代码,相关混淆方案配置使用比较复杂且针对springboot项目问题较多,所以针对class文件加密再通过自定义的classloder进行解密加载,此方案并不是绝对安全,只是加大反编译的困难程度,防君子不防小人,整体加密保护流程图如下图所示 maven插件加密 使用自

  • SpringBoot详细讲解异步任务如何获取HttpServletRequest

    目录 原因分析 解决方案 前置条件 pom配置 requrest共享 自定义request过滤器 自定义任务执行器 调用示例 原因分析 @Anysc注解会开启一个新的线程,主线程的Request和子线程是不共享的,所以获取为null 在使用springboot的自定带的线程共享后,代码如下,Request不为null,但是偶发的其中body/head/urlparam内容出现获取不到的情况,是因为异步任务在未执行完毕的情况下,主线程已经返回,拷贝共享的Request对象数据被清空 Servlet

  • SpringBoot详细讲解多个配置文件的配置流程

    目录 配置文件加载顺序 验证 前期准备 验证配置文件加载顺序 验证属性互补 总结 一般情况下,springboot默认会在resource目录下生成一个配置文件(application.properties或application.yaml),但其实springboot允许配置多个配置文件(application.properties或application.yaml),但是这并不意味着这些配置文件一定会替换默认生成的配置文件,它们是互补的存在.如果在某些场景下需要把配置文件单独拿出来并且启动的

  • SpringBoot详细讲解如何创建及刷新Spring容器bean

    目录 一.前期准备 1.1 创建工程 1.2 创建Controller 二.探究过程 2.1 启动类 2.2 SpringApplication 2.3 ApplicationContextFactory 2.4 SpringApplication 2.5 结论 参考视频:https://www.bilibili.com/video/BV1Bq4y1Q7GZ?p=6 通过视频的学习和自身的理解整理出的笔记. 一.前期准备 1.1 创建工程 创建springboot项目,springboot版本为

  • Springboot详细讲解RocketMQ实现顺序消息的发送与消费流程

    目录 一.创建Springboot项目添加rockermq依赖 二.配置rocketmq 三.新建一个controller来做消息发送 四.创建消费端监听消息消费消息 五.启动服务测试顺序消息发送与消费 如何实现顺序消息? 需要程序保证发送和消费的是同一个 Queue rocketmq默认发送的消息是进入多个消息队列,然后消费端多线程并发消费,所以默认情况,不是順序消费消息的:有時候,我们需要顺序消费一批消息,比如电商系统 订单创建.支付.完成操作,需要順序执行: RocketMQTemplat

  • SpringBoot详细讲解断言机制原理

    目录 1.简单断言 2.数组断言 3.组合断言 4.异常断言 5.超时断言 6.快速失败 JUnit 5 内置的断言可以分成如下几个类别: 1.简单断言 用来对单个值进行简单的验证.如: 方法 说明 assertEquals 判断两个对象或两个原始类型是否相等 assertNotEquals 判断两个对象或两个原始类型是否不相等 assertSame 判断两个对象引用是否指向同一个对象 assertNotSame 判断两个对象引用是否指向不同的对象 assertTrue 判断给定的布尔值是否为

  • SpringBoot详细讲解yaml配置文件的用法

    目录 1.基本语法 2.数据类型 3.代码测试 4.开启补全提示 1.基本语法 key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释 字符串无需加引号,如果要加,单引号’'.双引号""表示字符串内容会被 转义.不转义 2.数据类型 1.字面量:单个的.不可再分的值.date.boolean.string.number.null k: v 2.对象:键值对的集合.map.

  • SpringBoot详细讲解静态资源导入的实现

    目录 SpringBootWeb开发 1. 静态资源导入 webjars 使用自己的静态资源 总结 2.制作特殊的首页 图标转变 Thymeleaf模板引擎 引入Thymeleaf 取值 有无转义 循环 SpringBootWeb开发 回顾一下: springboot帮助我们配置了什么,能不能进行修改,能修改哪些,能否扩展? xxxAutoConfiguration:向容器中自动配置组件 xxxProperties:自动配置类,装配配置文件中自定义的一些内容 开发要解决的问题: 导入静态资源 首

  • Springboot详细讲解循环依赖

    目录 一.循环依赖 二.循环依赖形成条件(使用构造器注入) 三.循环依赖形成条件(@Aysnc注解的bean生成了对象的代理) 四.针对以上问题对Spring如何解决循环依赖进行详细阐述 一.循环依赖 顾名思义多个类中的依赖形成了环路,形成了类似于死锁的情况,导致springboot在启动时无法为我们创建Bean.通俗来说 就是beanA中依赖了beanB,beanB中也依赖了beanA. spring是支持循环依赖的,但是默认只支持单例的循环依赖,如果bean中依赖了原型bean,则需要加上l

随机推荐