springboot()—— springboot整合mybatis

news2024/11/24 14:53:49

总结:

和SSM相比,

1)导入的包不同

2)不再有mybatis的核心配置文件了,也不同单独写db.properties了,以前“开启二级缓存,起别名”等在核心配置文件里的配置全都配置到application.properties里

3)@Mapper注解,代替了什么往下看吧!

1、新建project/module

选择如下模板

2、创建测试用的表 

本来想直接用公司的表去测,但是除了查询,还要测试增删改,别不小心改数据了,不能拿公司的表测,笑死。那就拿之前建的book表去测吧

 3、导入jar包 

 导入mybatis官方提供的整合用的jar包mybatis-spring-boot-starter(有的公司不用starter这个jar包,而是直接用mybatis-plus)

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

 4、配置数据库

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/db_mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

5、创建pojo、mapper接口、mapper.xml配置文件、在springboot配置文件中配置mybatis

(1)pojo.Blog.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Blog {
    private String id;
    private String title;
    private String author;
    private Date create_time;
    private int views;
}

(2)BlogMapper.java 接口

@Mapper
public interface BlogMapper {
    //1.查找所有Blog
    List<Blog> selectAllBlog();
    //2.添加一个Blog
    void addBlog(Blog blog);
    //3.修改
    void updateBlog(Map<String,Object> map);
    //4.删除
    void deleteBlogById(String id);
}

这里用到两个注解(二选一)@Mapper和@Repository,都是自动帮我们生成mapper接口的实现类MapperImpl.java,然后将实现类的实例直接注入到bean中,不需要我们再手动去写mapper接口的实现类。相当于SSM中我们配置的这一段:

 但是在springboot中更简洁,有两种方法:

  • @Mapper注解
  • @Repository注解+@MapperScannerConfigurer注解

(3)BlogMapper.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.springbootmybatis.dao.BlogMapper">
    <select id="selectAllBlog" resultType="blog">
       select * from db_mybatis.blog
   </select>

    <insert id="addBlog" parameterType="blog">
        insert into db_mybatis.blog
        values (#{id},#{title},#{author},#{create_time},#{views})
    </insert>
    
    <update id="updateBlog" parameterType="map">
        update db_mybatis.blog
        SET title=#{title}
        where id=#{id}
    </update>

    <delete id="deleteBlogById" parameterType="java.lang.String">
        delete from db_mybatis.blog
        where id=#{7/21}
    </delete>
</mapper>

(4)在application.properties中整合mybatis

​# 整合mybatis
mybatis.type-aliases-package=com.example.demo.springbootmybatis.pojo
mybatis.mapper-locations=这里看下面,会出错

 (5)测试

@SpringBootTest
class SpringbootMybatisApplicationTests {
    @Resource
    BlogMapper blogMapper;

    @Test
    void contextLoads() throws SQLException {
        //查找
//        List<Blog> blogs = blogMapper.selectAllBlog();
//        System.out.println(blogs);

        //增加
        //blogMapper.addBlog(new Blog("7/21","怎么还不下班","小丁",new Date(),2));

        //删除
        blogMapper.deleteBlogById("7/21");

        //修改
//        Map<String, Object> map = new HashMap<>();
//        map.put("id","7/21");
//        map.put("title","还有两个小时下班");
//        blogMapper.updateBlog(map);
    }

}

出现问题

 报出了“invalid bound statement”问题,貌似在springboot中,xml配置文件只能放在resources下面吗(按照约定大于配置)?

修改后:

# 整合mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端实现文件上传的方式

这个文章总结了四种前端上传文章的方式 <inputtype"file"multipleonChange{(e) > {const c [].slice.call(e.target.files);console.log(e.target.files, e.target.files);console.log(e.target.files.arrary, c);const v new FormData();v.append(file, c[…

K8S初级入门系列之九-共享存储

一、前言 Pod里面的容器都有自己独立的文件系统&#xff0c;来自容器镜像&#xff0c;用于保存容器运行的数据&#xff0c;但容器的文件存储有两个弊端&#xff0c;一个是无法持久化&#xff0c;其生命周期与容器一致&#xff0c;一旦容器销毁&#xff0c;相关的数据也就随之一…

0134 数据的表示和运算3

目录 2.数据的表示和运算 2.3浮点数的表示与运算 2.3部分习题 2.数据的表示和运算 2.3浮点数的表示与运算 2.3部分习题 1.下列关于对阶操作&#xff0c;正确的是&#xff08;&#xff09; A.在浮点加减运算的对阶操作中&#xff0c;若阶码减小&#xff0c;则尾数左移 …

pytorch工具——认识pytorch

目录 pytorch的基本元素操作创建一个没有初始化的矩阵创建一个有初始化的矩阵创建一个全0矩阵并可指定数据元素类型为long直接通过数据创建张量通过已有的一个张量创建相同尺寸的新张量利用randn_like方法得到相同尺寸张量&#xff0c;并且采用随机初始化的方法为其赋值采用.si…

数值线性代数:知识框架

记录数值线性代数研究的知识框架。 软件包线性方程组直接法Guass消元法/LU分解、Cholesky分解 LAPACK oneAPI MKL ARPACK Octave 迭代法Jacobi迭代、SOR迭代、共轭梯度法最小二乘特征值/特征向量非对称幂法、QR、Arnoldi分解对称QR、Jacobi、二分法、分治法、SVD 参考资料 G…

【C语言day03】

参数a是指针&#xff0c;要接收地址&#xff0c;BD错误。参数b可以接收的是char*&#xff0c;而&c的类型是char(*)[10]&#xff0c;C错误全局变量i&#xff0c;在main()中修改为5&#xff0c;第一次在prt()中执行循环输出三次*&#xff0c;i被修改为8&#xff0c;回到main(…

MyBatis学习笔记——3

MyBatis学习笔记——3 一、MyBatis小技巧1.1、#{}和${}1.2、typeAliases1.3、mappers1.4、插入数据时获取自动生成的主键 二、MyBatis参数处理2.1、单个简单类型参数2.2、 Map参数2.3、实体类参数2.4、多参数2.5、 Param注解&#xff08;命名参数&#xff09;2.6、 Param源码分…

网络安全(黑客)就业分析指导

一、针对网络安全市场分析 市场需求量高&#xff1b;则是发展相对成熟入门比较容易。所需要的技术水平国家政策环境 对于国家与企业的地位愈发重要&#xff0c;没有网络安全就没有国家安全 更有为国效力的正义黑客—红客联盟 可见其重视程度。 需要掌握的知识点偏多 外围打点…

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen&#xff0c;之后一直按Enter即可&#xff0c;这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意&#xff1a;也可以在 windows 端生成密钥&#xff0c;只需要保证公钥在服务器端&#xff0c;私钥…

30天自制操作系统 day 1 写一个可以在没有操作系统的计算机上输出字符串的程序,并在计算机上运行

day 1 工具&#xff1a;qemu 模拟器 今日任务 计算机启动后&#xff0c;在屏幕打印一串字符串。 理论 显示字符的原理 把一些机器指令写在第一扇区。通过int 0x10中断&#xff0c;让显卡在屏幕上显示字符。只需要在0x10之前按照规定准备好寄存器&#xff0c;显卡就能正确…

2020年下半年系统架构设计师考试案例分析真题(参考答案)

试题一 1、阅读以下关于软件架构设计与评估的叙述&#xff0c;在答题纸上回答问题1和问题2。 [说明] 某公司拟开发--套在线软件开发系统&#xff0c;支持用户通过浏览器在线进行软件开发活动。该系统的重要功能包括代码编辑、语法高亮显示、代码编译、系统调试、代码仓库管理等…

Spring数据源

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring 目录 1、简介2、作用3、开发步骤3.1、导入坐标3.2、创建对象c3p0druid提取jdbc.properties读取配…

【iOS】App仿写--3GShare

文章目录 前言一、账号界面二、主页界面二、搜索界面三、文章界面四、活动界面五、我的界面总结 前言 这周写了3GShare的demo&#xff0c;这是一个十分麻烦的demo&#xff0c;比网易云需要设计的知识更多&#xff0c;特此撰写一下博客记录总结 一、账号界面 这里账号界面主要…

SourceTree使用ssh密钥

设置Git的user name和email&#xff1a; $ git config --global user.name "xxx" $ git config --global user.email "xxx.mailxxx.com".检查是不是已经存在密钥&#xff08;能进去说明已经存在&#xff0c;就删掉文件夹&#xff0c;重新创建&#xff09;…

SPSS数据文件的结构重组

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件可在个人主页—…

python:GEDI 波形数据提取

作者:CSDN @ _养乐多_ 在这篇博客中,我们将介绍如何使用 Python 处理和可视化 GEDI(Global Ecosystem Dynamics Investigation)激光雷达数据。GEDI 是 NASA(美国国家航空航天局)推出的激光雷达地球观测任务,用于获取全球各地生态系统的三维结构信息。本文将以提取研究区…

VSCode同时编译多个C文件

一.环境说明 1.系统&#xff1a;Ubuntu 22.04.2 LTS 2.Visual Studio Code: 1.80.1 二.问题描述 今天使用VSCode编译《Programming Abstractions In C》书中的gymjudge.c代码时遇到错误&#xff0c;错误提示为&#xff1a; (base) codistspc:~/projects/Programming-Abstracti…

Ubuntu下打开QtCreator环境变量LD_LIBRARY_PATH与终端不一致

问题描述&#xff1a; 在unbuntu下使用QtCreator编译、运行程序时&#xff0c;总是出现XXX.so: cannot open shared object file: No such file or directory这类问题&#xff0c;但是在终端中编译或者运行程序则不会出现这些问题。在网上查了好久才明白QtCreator在打开时&…

【Visual Studio】Qt 在其他 cpp 文件中调用主工程下文件中的函数

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 还整了一个如何在其他文件中调用 ui 控件的文章&#xff0c;感兴趣可以看&#xff1a;【Visual Studio】Qt 在其他 cpp 文件中调用操作 ui 界面控件。 文章目…

机器学习实战10-基于spark大数据技术与机器学习的结合应用实战

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战10-基于spark大数据技术与机器学习的结合应用实战&#xff0c;Spark是一种快速、通用的大数据处理框架。它是由加州大学伯克利分校AMPLab开发。Spark提供了一个分布式计算的平台&#xff0c;可以在集群…