springboot-基础-eclipse集成mybatis+使用方法+排错

备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决!


目录

  • 集成mybatis
    • 安装mybatis的jar包
    • 安装插件:mybatis-generator
      • 安装方法
      • 生成方法
      • 报错:java.lang.RuntimeException: Exception getting JDBC Driver
    • mybatis注解
  • dao层XML语法
    • 使用map方式返回多条数据
    • 限定查询的条数
    • 返回List<String>型的函数
    • 报错
      • Could not resolve type alias 'BaseResultMap'
  • 排错
    • 入口类不能使用@MapperScan
    • dao无法自动装配
    • dao层测试NullPointerException

集成mybatis

mybatis是方便操作数据库的,不多说。

安装mybatis的jar包

去 https://github.com/mybatis/mybatis-3/releases 下载zip,解压
项目–run as/debug as–run configuration–Maven Build…–
在这里插入图片描述
Goals的内容是:

install:install-file -Dfile=F:\eclipse\mybatis-3.5.2\mybatis-3.5.2.jar -DgroupId=org.mybatis.spring.boot -DartifactId=mybatis-spring-boot-starter -Dversion=3.5.2 -Dpackaging=jar

-DgroupId -DartifactId -Dversion是跟pom.xml的配置对应的

然后点击run和apply

控制台显示success表示完成

右键项目名称–Maven–Update Project

在这里插入图片描述

之后pom文件dependency的报错会消失。

安装插件:mybatis-generator

这个可以自动读取数据库里的表格产生操作数据的mapper

安装方法

Help–Install New Software–Add–Location: https://dl.bintray.com/mybatis/mybatis-generator/

之后就等安装完成并重启。修改pom.xml(这个version不知道可以去线上查)

                <dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version></dependency>

另外plugins下也要添:mybatis-generator.xml是实际配置文件

<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency></dependencies></plugin>

mybatis-generator示例:

<generatorConfiguration>
<!--  一个数据库一个context  -->
<context id="sqlserverTables">
<!--  生成的pojo,将implements Serializable  -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!--  数据库链接URL、用户名、密码  -->
<!--  连接字符串  -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/genes?serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true" userId="root" password="123"> </jdbcConnection>
<!--  类型转换  -->
<javaTypeResolver>
<!--  默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL和 NUMERIC 类型解析为java.math.BigDecimal  -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--  生成model模型,对应的包路径,以及文件存放路径(targetProject),targetProject可以指定具体的路径,如./src/main/java,也可以使用“MAVEN”来自动生成,这样生成的代码会在target/generatord-source目录下  -->
<javaModelGenerator targetPackage="com.example.demo.model" targetProject="demo1">
<!--  是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.github.jackieonwaymodel.[schemaName]  -->
<property name="enableSubPackages" value="false"/>
<!--  从数据库返回的值被清理前后的空格  -->
<property name="trimStrings" value="true"/>
<!--  是否生成构造函数 默认是false  -->
<property name="constructorBased" value="false"/>
</javaModelGenerator>
<!-- 对应的mapper.xml文件  -->
<sqlMapGenerator targetPackage="com.example.demo.mapper" targetProject="demo1">
<property name="enableSubPackages" value="false"/>
<property name="constructorBased" value="false"/>
</sqlMapGenerator>
<!--  对应的Mapper接口类文件  -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.mapper" targetProject="demo1">
<property name="enableSubPackages" value="false"/>
<property name="constructorBased" value="false"/>
</javaClientGenerator>
<table tableName="gene_human" domainObjectName="GeneBasicsHuman" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" mapperName="GeneBasicsHumanDao">
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
<table tableName="sgrna_human" domainObjectName="SgrnaHuman" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" mapperName="SgrnaHumanDao">
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
</context>
</generatorConfiguration>

文件说明:

targetProject要写你现在的项目名。什么src/main/java啊,正斜杠反斜杠啊,src啊,.\src啊,绝对路径啊,都不对。就乖乖写项目名。
在这里插入图片描述
在这里插入图片描述
另外connectionURL里要写数据库名称。
在这里插入图片描述
这里就是要用的数据库的名字

下面<table>就是你要生成代码的表,只要换换名字就好了。

生成方法

项目名称右键–run as–run configurations–MyBatis Generator–添加上configuration file,运行即可。
在这里插入图片描述

刷新一下目录,就可以看到model和mapper下都有文件产生了。如果successful但是没文件产生,请检查targetProject是不是写错了
在这里插入图片描述

报错:java.lang.RuntimeException: Exception getting JDBC Driver

检查pom文件中mysql-connector-java这个配了没有,如果写了下面这句,请删除
<scope>runtime</scope>

mybatis注解

注解方式操作数据:

@Select是查询类的注解,所有的查询均使用这个

@Result修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
如果不对应,如下面这个例子,updateTime时实体类属性,update_time是sql列名

@Select("select *from Demo where id=#{id}")  @Results({  @Result(property="updateTime",column="update_time")  })  
public Demo selectById2(int id); 

@Insert插入数据库使用,直接传入实体类会自动解析属性到对应的值

@Update负责修改,也可以直接传入对象

@delete负责删除

dao层XML语法

使用map方式返回多条数据

接口上指定哪个是key,这个key来自数据库那个表的某个字段,而map的value必须是对象,比如某个实体类。

接口:

@MapKey("chr")
Map<String, ChrAcc> selectByTaxon(String taxon);

xml:

  <select id="selectByTaxon" parameterType="java.lang.String" resultType="com.example.demo.model.ChrAcc">select <include refid="Base_Column_List" />from chr_to_accwhere taxon = #{taxon,jdbcType=VARCHAR}</select>

限定查询的条数

接口:

List<NegCtrl> selectByTaxon(String taxon, String num);

xml:直接使用接口的变量,由于num是String类型,sql中会继续加引号,所以这里应该用$
在这里插入图片描述

返回List型的函数

接口:

List<String> selectByTransId(String taxon, String transId);

xml中注意:是resultType而不是resultMap。如果说这里不是String而是别的对象类型,写对应的就好了。
在这里插入图片描述

报错

Could not resolve type alias ‘BaseResultMap’

查看select语句,有没有把resultMap写成了resultType?
在这里插入图片描述

排错

入口类不能使用@MapperScan

查找不到org.mybatis.spring.annotation,因此无法引用其下的MapperScan
此时Project Explore下的Maven Dependencies中,也找不到mybatis-spring-XXX.jar

先去查一下
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring

由于我装了最新版的mybatis(3.5.2),所以直接看最新的mybatis spring,也就是2.0.2。如下图,版本合适。
在这里插入图片描述

所以原因是我没有配置org.mybatis的dependency。去pom.xml下粘贴网页上这一段
在这里插入图片描述

update项目一下,就发现可以使用MapperScan了。
(项目名称,右键,maven-update project)

dao无法自动装配

Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

其实Juint test已经显示这个问题了。建议先用那个测试每段代码每个功能,再做下一步的开发。

解决:类似上面的,添加依赖

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

在这里插入图片描述

正确输出:
在这里插入图片描述

dao层测试NullPointerException

mybatis自动生成的函数,调用的结果都是空指针。那说明没有装配上。检查:

  1. RunWith这句有没有注释掉,要取消注释

  2. dao接口上有没有写@Mapper引导spring来注入

xml的语法错误会报出来,不会是空指针

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

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

相关文章

数据之美:用山海鲸展现数据魅力

在数据分析领域&#xff0c;数据可视化是一个至关重要的环节。作为一名资深的数据分析师&#xff0c;我深知一个直观、易于理解的数据可视化看板对于传达信息、辅助决策的重要性。今天&#xff0c;我将以自己在用的山海鲸可视化软件为例&#xff0c;与大家分享如何制作一个高效…

LeetCode 热题 100 | 图论(上)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…

项目登录方案选型

一.Cookie + Session 登录 大家都知道,HTTP 是一种无状态的协议。无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求返回数据,但不会记录任何信息。为了解决 HTTP 无状态的问题,出现了 Cookie。Co…

离线数仓(四)【数仓数据同步策略】

前言 今天来把数仓数据同步解决掉&#xff0c;前面我们已经把日志数据到 Kafka 的通道打通了。 1、实时数仓数据同步 关于实时数仓&#xff0c;我们的 Flink 直接去 Kafka 读取即可&#xff0c;我们在学习 Flink 的时候也知道 Flink 提供了 Kafka Source&#xff0c;所以这里不…

协议-http协议-基础概念02-请求应答过程-请求响应报文结构-头部字段-请求方法-响应方式

参考来源&#xff1a; 极客时间-透视HTTP协议(作者&#xff1a;罗剑锋)&#xff1b; web抓包实战课-陶辉&#xff1b; 01-HTTP协议请求-应答过程 最简单的浏览器 HTTP 请求过程 浏览器从地址栏的输入中获得服务器的 IP 地址和端口号&#xff1b;浏览器用 TCP 的三次握手与服…

基于springboot的4S店车辆管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

win10开机黑屏,只有鼠标,解决方案

问题描述 win10进不去桌面&#xff0c;可以进去锁屏&#xff0c;只有鼠标&#xff0c;也能进去任务管理器&#xff08;ctrlwindelete&#xff09;, 问题分析 进入任务管理器->文件->运行新任务 然后输入 explorer.exe 发现找不到了 原因&#xff1a;误删explorer.exe …

Linux系统---nginx(1)服务

目录 一.Nginx概述 1.定义 2.Nginx模块作用 &#xff08;1&#xff09;main模块 &#xff08;2&#xff09;stream服务模块 &#xff08;3&#xff09;邮件服务模块 &#xff08;4&#xff09;第三方模块 &#xff08;5&#xff09;events模块 &#xff08;6&#xff0…

300分钟吃透分布式缓存-16讲:常用的缓存组件Redis是如何运行的?

Redis 基本原理 Redis 简介 Redis 是一款基于 ANSI C 语言编写的&#xff0c;BSD 许可的&#xff0c;日志型 key-value 存储组件&#xff0c;它的所有数据结构都存在内存中&#xff0c;可以用作缓存、数据库和消息中间件。 Redis 是 Remote dictionary server 即远程字典服务…

SpringCloud有哪些组件

什么是SpringCloud&#xff1f; Spring Cloud是基于Spring Boot的分布式系统开发工具&#xff0c;它提供了一系列开箱即用的、针对分布式系统开发的特性和组件&#xff0c;用于帮助开发人员快速构建和管理云原生应用程序。 Spring Cloud的主要目标是解决分布式系统中的常见问题…

代码随想录算法训练营第二十七天补|39. 组合总和 ● 40.组合总和II ● 131.分割回文串

组合问题&#xff1a;集合内元素的组合&#xff0c;不同集合内元素的组合 分割问题&#xff1a;本质还是组合问题&#xff0c;注意一下如何分割字符串 回溯模板伪代码 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xf…

【Maven】Maven 基础教程(一):基础介绍、开发环境配置

Maven 基础教程&#xff08;一&#xff09;&#xff1a;基础介绍、开发环境配置 1.Maven 是什么1.1 构建1.2 依赖 2.Maven 开发环境配置2.1 下载安装2.2 指定本地仓库2.3 配置阿里云提供的镜像仓库2.4 配置基础 JDK 版本2.5 配置环境变量 1.Maven 是什么 Maven 是 Apache 软件…

N个数中寻找前K个最大的数

文章目录 一、先把这N个数的前K个建立一个小堆二、再把这K个数与剩下的N-K个数进行比较交换三、最后用向下调整算法就可以得到这N个数中最大的前K个 一、先把这N个数的前K个建立一个小堆 先创建一个文本文件&#xff0c;然后向里面写数据&#xff0c;这里N我设置的是1000 int n…

【web APIs】1、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、概念二、使用步骤1.获取DOM对象2.操作元素内容3.属性修改3.1.常用属性修改3.2.控制样式属性3.3.操作类名(className) 操作CSS3.4.操作表单元素属性3.5.自定…

【LeetCode每日一题】938. 二叉搜索树的范围和

2024-2-26 文章目录 [938. 二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/)思路&#xff1a;写法一&#xff1a;在中间累加写法二&#xff1a;在最后累加 938. 二叉搜索树的范围和 思路&#xff1a; 1.在二叉搜索树中&#xff1a;左子树的结点都小于根节…

小甲鱼Python06 序列字典集合

一、序列 1.id函数 is运算符 我们首先思考下字符串、元组、列表的共同点&#xff1a; 都有很多共同的运算符。都可以通过索引来获取元素&#xff0c;第一个元素索引都是0&#xff0c;都可以通过切片的方法获取某个范围内元素的集合。 以上三种统称为序列。序列分为可变序列…

抖音视频评论采集软件|抖音数据抓取工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;让用户轻松获取抖音视频评论数据。 其中&#xff0c…

JSP实现数据传递与保存(一)

一、Web开发步骤 1.1两类模式 后端——————前端 先有前端&#xff0c;前端用的时候直接调用 后端已实现注册接口&#xff0c;接口名为doRegister.jsp 前端此时&#xff1a; 前端的form表单中的action提交地址就只能填doRegister.jsp&#xff0c;即&#xff1a; <f…

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;接管游戏连接服务器的操作 码云地址&#xff08;master 分支&#xff09;&#xff1a;染指/titan 码云版本号&#xff1a;00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址&#xff0c;在 ti…

Doris——荔枝微课统一实时数仓建设实践

目录 一、业务介绍 二、早期架构及痛点 2.1 早期架构 2.2 架构痛点 三、技术选型 四、新的架构及方案 五、搭建经验 5.1 数据建模 5.2 数据开发 5.3 库表设计 5.4 数据管理 5.4.1 监控告警 5.4.2 数据备份与恢复 六、收益总结 七、未来规划 原文大佬这篇Doris腾…