SpringMVC下{dataSource-1} inited一直卡在这处理

文章讲述了作者在使用Mybatis时遇到的问题,即由于将MySQL的LONGTEXT字段映射到resultMap中的jdbcType设置为LONGTEXT导致启动卡住。解决方法是将jdbcType改为VARCHAR或CLOB。Mybatis不直接支持LONGTEXT,因为它不是通用的数据库类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述按网上说的断点导致,或者其他原因导致的,在我这并不是这个原因导致的,而是使用Mybatis时,MySql内某个字段设置为LONGTEXT在与resultMap进行映射时导致的问题,因为使用的是自动生成工具生成默认的,只需将jdbcType=“LONGTEXT” 改成jdbcType=“VARCHAR” 即可。

原因及处理

一直卡- {dataSource-1} inited 图:
在这里插入图片描述解决卡住图:
在这里插入图片描述
可以看到只是把jdbcType="LONGTEXT"改成jdbcType="VARCHAR"就能成功启动

<resultMap id="BaseResultMap" type="">
	// 错误写法MyBatis不支持
    <result column="check_msg" jdbcType="LONGTEXT" property="checkMsg" />
    // 正确配法
    <result column="check_msg" jdbcType="VARCHAR" property="checkMsg" />
    // 或者使用这种写法
    <result column="check_msg" jdbcType="CLOB" property="description" />
</resultMap>

mybatis映射支持JDBC对照表图:
在这里插入图片描述mybatis官方文档地址:链接: mybatis3
可以看到Mybatis并不支持LongText,这是因为:

在 MyBatis 中,jdbcType 用于指定数据库字段的 JDBC 类型,以便在参数映射和结果映射时能够正确地进行类型转换。对于一些常见的数据库类型,MyBatis 已经提供了很好的支持,比如 VARCHAR、INTEGER 等。然而,像 LONGTEXT 这样的类型可能并不是所有数据库都通用。

实际上,LONGTEXT 是 MySQL 数据库特有的数据类型,表示可以存储非常长的文本数据。在 MyBatis 中,你应该使用与数据库通用的类型来替代 LONGTEXT,例如使用 VARCHAR 或者 CLOB(对应大文本类型)来表示非常长的文本数据

生命不息,学习不止,加油

### 回答1: Repository层和DAO的区别在于,Repository层是Spring框架中的一种设计模式,它是对DAO层的进一步封装和抽象,提供了更高层次的抽象和更加灵活的查询方式,同时也可以与其他框架集成。而DAO层则是数据访问层,主要负责与数据库进行交互,进行数据的增删改查等操作。因此,Repository层更加注重业务逻辑的处理和数据的封装,而DAO层则更加注重数据的访问和操作。 ### 回答2: Repository层和DAO(Data Access Object)在软件开发领域被广泛运用,是持久化层的两个概念。它们的主要区别在于: 1. 设计层面:DAO与具体的数据源进行交互,可以理解为对数据源的封装,同时负责数据访问和数据持久化的任务。而Repository层则更加高层抽象,不仅要负责对数据源的操作,还要对操作结果进行解释和加工,是对DAO层的进一步封装。 2. 对象层面:在设计模式上,DAO层通常为实体类提供单纯的数据访问,而在Repository层中实体类的处理则更加复杂,包括实体类与其他模型之间的转换等。 3. 维护层面:在Repository层中,可以通过重写方法、缓存等方法提高代码的复用性,这样就不需要在DAO层中管理重复代码的复杂性。同时在对于实体类的维护,也更加具有优越性。 综上所述,虽然DAO和Repository层都是持久化层的两个概念,但是它们在设计、实现、维护等方面都存在很大的差异。DAO层主要负责对应数据源的CURD操作,它更加偏向于数据访问和持久化。而Repository层则更加注重领域对象的逻辑操作,给予了更高层的抽象和更多的功能,扩展了对于软件面向对象的处理能力,但是Repository层的复杂性更高,需要在实际设计中结合项目的特点和开发人员的经验进行选择。 ### 回答3: Repository层和Dao层是很多应用程序中常用的两种设计模式,在由Java语言开发的Web应用程序中,他们主要用来处理数据持久层和数据库操作。 Repo是Repository的缩写,是指存储库。Repository层是一种抽象的接口层,负责数据持久化存储和查询,承担了所有的与数据存储相关的工作,也是应用程序与持久化框架之间的中间件。它对上层提供统一的接口方法,封装了Dao层,而内部实现则可以采用不同的框架(如MyBatis和Hibernate)。 Dao是Data Access Object的缩写,直译为数据访问对象,他的主要任务是封装数据库的访问,Dao对象提供了一系列的接口,用于对数据的增、删、改、查等操作。Dao层对于上层提供了一种对数据的存储和查询的持久化方法的抽象,但和Repository层不同的是,Dao着重于数据访问的实现,而不是业务逻辑的处理。 Repository层是面向领域模型的,它关注整个领域的需求,而不是单一的数据库操作,通过统一接口、多种实现的方式,将增删改查等数据访问方法封装在一个类中,从而调用起来更加方便,更加规范。一般而言,Repository是同时面向服务层和持久层的。 而Dao层专注于对数据的访问操作,它具有更加细粒度的操作,适用于面向更多的特定需求和数据访问的需求。Dao与JDBC非常类似,它们都是对数据层的操作进行抽象,Dao层将JDBC数据处理的功能封装为一个实现通用数据访问接口的类,屏蔽了数据访问细节,Facade层可以调用Dao层做数据访问,而无需直接操作JDBC。 综上所述,Repository层和Dao层都是数据持久化的方法,二者的区别在于,Repository层是对Dao层的进一步封装,用来将不同的数据源拼合成一个大的Repository接口,并且为其提供统一的接口方式,而Dao层则是对数据的访问和操作的抽象。个人认为,在设计应用程序时,应该根据具体的需求,选择不同的持久层接口,因此在开发过程中,Repository和Dao都有自己适用的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值