Mybatis为实体类定义别名typeAliases

首先为大家科普一下,Mybatis事实上就是Ibatis。它是由Ibatis更名而来。

最近在学Mybatis的知识,在讲到为实体类定义别名是有两个小知识与大家共勉。

为实体类定义别名一般有以下几个部分组成

1.在Mybatis的配置(一般为conf.xml)文件中添加以下代码

<typeAliases>
        <!--  <typeAlias type="zq.mybatis.test1.User" alias="_User"/> -->    
        <package name="zq.mybatis.test1"/>
</typeAliases>

 

 

 

 

细心的朋友会看到代码中备注掉的和没有被注释掉的。没错,今天的主题就是这两个key word------->typeAlias & pakage

(1).typeAlias具有属性 type 和alias<typeAlias type="zq.mybatis.test1.User" alias="_User"/>

  type中的属性值写的是对应实体的全类名。以上为例则表示实体类“User”所在的包路径“zq.mybatis.test1.”两个部分组成。

  alias的属性值则是取代type中的属性值

(2).package具有属性name。顾名思义就是所在包的名字。<package name="zq.mybatis.test1.User"/>

2.在对应的映射文件中将使用别名

<!-- 插入对象是的传入参数为整个实体类,相对应的参数要与实体中属性相同 -->
<insert id="insertUser" parameterType="_User">
    insert into users(name,age) values(#{name},#{age})
</insert>

<!-- 查询所有结果时,因为是将一个一个的USer实体添加到list中,
   所以在指定其返回结果参数只需要指定为返回实体就可以了 -->
<select id="getAllUser" resultType="_User">
    select * from users
</select>

 

 

 

 

 

 

 

 

很显然,以上映射文件中我使用的别名是“typeAlias”定义出来的别名。当使用这种方式定义别名的时候操作起来不会出错。但如果换成“package”定义的时候呢?他又没有设置别名,使用的时候该怎么使用别名呢?此时如果直接使用“_User”则会出现以下错误

java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195)
    at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:241)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in zq/mybatis/test2/usermapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.

Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class .

Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias '_User'. 

Cause: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:63)
    at zq.mybatis.utils.mybitsUtils.getfaFactory(mybitsUtils.java:17)
    at zq.mybatis.test2.Test2.<clinit>(Test2.java:13)
    ... 22 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class . Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias '_User'.  Cause: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:105)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:88)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:77)
    ... 25 more
Caused by: java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class . Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias '_User'.  Cause: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:113)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:88)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:311)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:103)
    ... 27 more
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class . Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias '_User'.  Cause: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:94)
    at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:79)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:121)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:111)
    ... 30 more
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias '_User'.  Cause: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:109)
    at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:115)
    at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:92)
    ... 34 more
Caused by: java.lang.ClassNotFoundException: Cannot find class: _User
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:188)
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:87)
    at org.apache.ibatis.io.Resources.classForName(Resources.java:250)
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:105)
    ... 36 more

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用package设置别名时还使用“typeAlias”定义出来的别名“_User二出现上面的这样的错误”是可以预料到的。那到底使用package设置别名的手该如何运用这个别名呢?其实道理很简单,我指定了他的包名,那这个包下面的所有实体相当于已经被设置了别名,而这个别名实际上就是某一个实体自己的实体名。

<update id="updateUser" parameterType="User">
        update users set name=#{name},age=#{age} where id=#{id}
</update>
<select id="getAllUser" resultType="User">
    select * from users
</select>

 

 

 

 

 

总的来说就是一个是设置到了具体的实体名(TypeAlias),而另一个则是只指定到了实体所在的包名(package)。从长远了看来使用后者设置包名在项目开发中更方便更好使

转载于:https://www.cnblogs.com/overtime-zhao/p/5601146.html

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

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

相关文章

一台计算机数据丢失与恢复,如何在不丢失数据的情况下将iPhone与多台计算机同步-万兴数据恢复-万兴恢复专家...

第2部分&#xff1a;将iPhone与多台计算机与iTunes同步如果用户对iPhone有很强的控制欲&#xff0c;并且不想尝试使用任何新软件来同步需求&#xff0c;那么iTunes也可用于将iPhone与多台计算机同步。虽然在第一时间&#xff0c;这可能听起来和iTunes的职能相悖&#xff0c;但实…

iOS OC语言: Block底层实现原理

来源http://www.wtoutiao.com/p/11dgbk4.html 先来简单介绍一下Block Block是什么&#xff1f; 苹果推荐的类型&#xff0c;效率高&#xff0c;在运行中保存代码。用来封装和保存代码&#xff0c;有点像函数&#xff0c;Block可以在任何时候执行。 Block和函数的相似性&#xf…

计算机过程控制系统教材,过程控制系统-样章试读.PDF

过程控制系统-样章试读.PDF高等院校教材过程控制系统陈夕松  汪木兰  主编李  奇      主审KB2北  京内 容 简 介本书以过程控制系统组成和结构为线索&#xff0c;介绍了过程控制的基本概念&#xff0c;过程控制常用仪表的原理和工程选用&#xff0c;过程对象及建模方法…

sufeinet

http://www.sufeinet.com http://tool.sufeinet.com/ 转载于:https://www.cnblogs.com/shiningrise/p/5603557.html

计算机如何取消还原卡,如何关闭硬件还原卡?

2009-11-06有什么方法可以让电脑每次关机都可以自动删1)打开控制面板/性能维护/管理工具/双击本地安全策略&#xff0c;在右侧选“关机清理虚拟内存页面文件”双击他选“已启用”按应用重启即可。2)建议下载超级兔子是免费的小巧著名的软件&#xff0c;选择清理系统垃圾(全选)&…

服务器虚拟主机推荐,免费的虚拟主机推荐

写在前面&#xff1a;免费虚拟主机免费虚拟主机是指IDC服务商“免费”为站长提供网页寄存服务。免费虚拟主机--用于制作免费个人网站&#xff0c;是学习网页设计的好方法。虚拟主机就是指网站空间&#xff0c;是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等&…

如何优化虚拟桌面

虚拟桌面代理安装的具体优化&#xff1a; 禁止Windows 自动更新[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update]"AUOptions"dword:00000001"ScheduledInstallDay"dword:00000000"ScheduledInstallTime&qu…

服务器配置和性能,服务器性能配置(硬件)

原标题&#xff1a;服务器性能配置(硬件)1.CPU大部分的CPU在同一时间内只能运行一个线程&#xff0c;但是超线程的处理器可以在同一个时间运行多个线程&#xff0c;可以利用处理前超线程特性提高系统性能。虽然采用超线程技术能同时执行两个线程&#xff0c;但它并不象两个真正…

js/css文件修改后浏览器本地缓存解决

本文实例讲述了让html页面随js的修改来更新缓存的实现方法。分享给大家供大家参考。具体实现方法如下&#xff1a; 很多朋友都会碰到这样的情况&#xff1a;如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件&#xff0c;但对于我们修改后调试和发布是非常的不方便了…

图片自动翻转css代码,用css实现图片翻转(示例代码)

简介这篇文章主要介绍了用css实现图片翻转(示例代码)以及相关的经验技巧&#xff0c;文章约1193字&#xff0c;浏览量447&#xff0c;点赞数1&#xff0c;值得参考&#xff01;用css实现图片翻转.flip-container {perspective:1000px;}.flip-container:hover .flipper {transfo…

06:月度开销

题目链接&#xff1a;http://noi.openjudge.cn/ch0111/06/ 总时间限制: 1000ms 内存限制: 65536kB描述  农夫约翰是一个精明的会计师。他意识到自己可能没有足够的钱来维持农场的运转了。他计算出并记录下了接下来 N (1 ≤ N ≤ 100,000) 天里每天需要的开销。 约翰打算为连续…

ajax传值controller怎么写,ajax如何传递参数给controller

前台&#xff1a;‘type‘ : ‘post‘,‘contentType‘ : ‘application/json;charsetUTF-8‘,‘data‘ : JSON.stringify(JsonObject),其中JsonObject就是你组装的JSON对象后台&#xff1a;RequestMapping(value "/query", method RequestMethod.PO…

mc服务器玩家无限掉线怎么办,服务器频繁掉线 求解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Mods loaded: 37ModLoader 1.1mod_MinecraftForge 1.3.3.12mod_ModLoaderMp 1.1mod_NotEnoughItems 1.1.2mod_ReiMinimap v3.0_01 [1.1]mod_AnimalBikes AnimalBikes 1.9.0mod_BuildCraftCore 2.2.12mod_BuildCraftBuilders 2.2.12…

delphi中的copy,delete,pos和leftstr,RightStr的用法

copy举个例子&#xff1a;str : “123456”;str1 : Copy(Str,2,3);结果就是 str1 等于 234。Copy有3个参数&#xff0c;第一个是你要处理的字符串&#xff0c;第二个是你要截取的开始位置&#xff0c;第3个是截取位数。当你的第3个参数大于字符长度&#xff0c;那么效果就是取 …

js中报错 ajax不存在,AJAX

AJAX : Asynchronous JavaScript and XML 异步JavaScript和XML (XML更多的是被JSON格式替代使用)AJAX 只做一件事情&#xff1a;异步获取数据&#xff0c;更为重要的是还是JS对返回的数据进行操作。异步获取数据极大地改善web与用户的数据交互(如下图左侧为传统web,右侧为借…

nylon尼龙的来历

nylon 尼龙 在1938年&#xff0c;美国杜邦&#xff08;du pont&#xff09;公司用工业原料试制出的一种合成纤维&#xff0c;老板让职员们取一个好记又适用于各种语言的名字&#xff0c;结果就取成了这个nylon。先是作为商标&#xff0c;后来作为产品属名。 乙烯vinyl和人造丝r…

iOS开发内购图文教程

2015年最全的内购图文教程&#xff0c;首先是填各种资料&#xff0c;最后是代码&#xff0c;废话不多说&#xff0c;直接上图 第一部分协议 第一步.png第二步.jpg第三步.jpg第四步.png第五步.png第六步.png第七步.jpg第八步.jpg第九步.jpg第十步.pngCNAPS CODE 查询地址https:/…

cisco服务器维修,面向终端的AMP控制台的思科维护的排除列表更改

简介本文档介绍添加到思科维护的例外项的更改。思科维护的例外项由思科创建和维护&#xff0c;以便在面向终端的高级恶意软件防护(AMP)连接器和防病毒、安全或其他软件之间提供更好的兼容性&#xff0c;这些例外项可以添加到应用的新版本。作者&#xff1a;思科工程师Caly Hess…

服务器怎么用光驱装系统教程,使用光驱重装系统详细教程

电脑系统在用了很长一段时间后总会出现卡顿或者其他的问题&#xff0c;这时很多小伙伴后就会选择进行系统的重装&#xff0c;系统的重装也是有多种方法的&#xff0c;比如使用U盘进行重装&#xff0c;或者使用光驱&#xff0c;而今天小编要给大家分享的就是使用光驱重装系统的详…

struts2 Eclipse 中集成strust2开发框架实例

下面通过建立一个小的实例具体来说明Eclipse 集成struts2,以下实例采用的为 struts2 版本为 struts2 2.2.3.1 为应用. 1. 下载struts2的开发包 第一步: 在浏览器中输入 http://apache.org 第二步:在apche的页面项目中选择struct 点击连接进入相关页面 第三步: 点击download选择…