MyBatis(六):配置之类型别名优化(mybatis起别名的作用)

  本篇文章为你整理了MyBatis(六):配置之类型别名优化(mybatis起别名的作用)的详细内容,包含有mybatis 别名配置 mybatis起别名的作用 mybatis内置类型别名 mybatis别名区分大小写吗 MyBatis(六):配置之类型别名优化,希望能帮助你了解 MyBatis(六):配置之类型别名优化。

  一、为什么要进行类型别名优化

  首先我们来看一下前面写的UserMapper.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"

   !-- 命名空间namespace对应Mapper接口 --

   mapper namespace="com.jms.dao.UserMapper"

   !-- id对应接口中的方法 --

   select id="getUsers" resultType="com.jms.pojo.User"

   select * from mybaties.user

   /select

   select id="getUserbyid" parameterType="int" resultType="com.jms.pojo.User"

   select * from mybaties.user where id=#{id}

   /select

   insert id="addUser" parameterType="com.jms.pojo.User"

   insert mybaties.user value(#{id},#{username},#{password})

   /insert

   update id="UpdateUser" parameterType="com.jms.pojo.User"

   update mybaties.user set username=#{username},password=#{password} where id=#{id}

   /update

   delete id="DeleteUser" parameterType="int"

   delete from mybaties.user where id=#{id}

   /delete

   /mapper

 

  其中"com.jms.pojo.User"是全限定类名,十分冗余,类型别名就是为了设置缩写名字,意在降低冗余的全限定类名书写。

  二、怎样进行类型别名优化

  1.类型别名可为 Java 类型设置一个缩写名字

  我们修改mybatis-config.xml配置文件,为其添加以下的内容:

  

 typeAliases 

 

   typeAlias type="com.jms.pojo.User" alias="User"/

   /typeAliases

 

  需要注意一个点:mybatis-config.xml配置文件中各个标签都有着自己的固定顺序,这个顺序就是官方给出的配置结构顺序,打乱会报错。

  接下来我们去把UserMapper.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"

   !-- 命名空间namespace对应Mapper接口 --

   mapper namespace="com.jms.dao.UserMapper"

   !-- id对应接口中的方法 --

   select id="getUsers" resultType="User"

   select * from mybaties.user

   /select

   select id="getUserbyid" parameterType="_int" resultType="User"

   select * from mybaties.user where id=#{id}

   /select

   insert id="addUser" parameterType="User"

   insert mybaties.user value(#{id},#{username},#{password})

   /insert

   update id="UpdateUser" parameterType="User"

   update mybaties.user set username=#{username},password=#{password} where id=#{id}

   /update

   delete id="DeleteUser" parameterType="_int"

   delete from mybaties.user where id=#{id}

   /delete

   /mapper

 

  然后进行测试,测试通过。

  2.类型别名也可以指定一个包名

  我们还是先修改mybatis-config.xml配置文件:

  

 typeAliases 

 

   package name="com.jms.pojo"/

   /typeAliases

 

  指定包名后,MyBatis会自动搜索包下的JavaBean,此时又分为没有注解和有注解两种情况。

  (1)没有注解

  会使用JavaBean的类名,首字母小写来作为它的别名,例如Hello.class,他的别名就是"hello"。接下来我们进行具体的试验。

  先修改UserMapper.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"

   !-- 命名空间namespace对应Mapper接口 --

   mapper namespace="com.jms.dao.UserMapper"

   !-- id对应接口中的方法 --

   select id="getUsers" resultType="user"

   select * from mybaties.user

   /select

   select id="getUserbyid" parameterType="_int" resultType="user"

   select * from mybaties.user where id=#{id}

   /select

   insert id="addUser" parameterType="user"

   insert mybaties.user value(#{id},#{username},#{password})

   /insert

   update id="UpdateUser" parameterType="user"

   update mybaties.user set username=#{username},password=#{password} where id=#{id}

   /update

   delete id="DeleteUser" parameterType="_int"

   delete from mybaties.user where id=#{id}

   /delete

   /mapper

 

  测试通过。

  经过实验,其实首字母不小写直接用类名也可以,但最好还是使用官方推荐的首字母小写的形式。

  (2)有注解

  首先,为User类添加注解:

  

1 package com.jms.pojo;

 

  3 import org.apache.ibatis.type.Alias;

  5 @Alias("hello")

  6 public class User {

  7 }

 

  此时将其别名注解为"hello",接下来修改UserMapper.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"

   !-- 命名空间namespace对应Mapper接口 --

   mapper namespace="com.jms.dao.UserMapper"

   !-- id对应接口中的方法 --

   select id="getUsers" resultType="hello"

   select * from mybaties.user

   /select

   select id="getUserbyid" parameterType="_int" resultType="hello"

   select * from mybaties.user where id=#{id}

   /select

   insert id="addUser" parameterType="hello"

   insert mybaties.user value(#{id},#{username},#{password})

   /insert

   update id="UpdateUser" parameterType="hello"

   update mybaties.user set username=#{username},password=#{password} where id=#{id}

   /update

   delete id="DeleteUser" parameterType="_int"

   delete from mybaties.user where id=#{id}

   /delete

   /mapper

 

  进行测试,通过。

  所以上面两种方式都可以进行类型别名优化,那么我们什么时候指定缩写名字,什么时候指定包名呢?

  当包中的JavaBean较少时,指定定缩写名字;当包中的JavaBean较多时,指定包名。

  三、java内建类型别名补充

  下面是一些为常见的 Java 类型内建的类型别名。它们都是不区分大小写的,注意,为了应对原始类型的命名重复,采取了特殊的命名风格。

  以上就是MyBatis(六):配置之类型别名优化(mybatis起别名的作用)的详细内容,想要了解更多 MyBatis(六):配置之类型别名优化的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: