1 基本知识

MyBatis中如果每次配置类名都要写全称也太不友好了,我们可以通过在主配置文件中配置别名,就不再需要指定完整的包名了。

别名的基本用法:

  1. <configuration>
  2. <typeAliases>
  3. <typeAlias type="com.domain.Student" alias="Student"/>
  4. </typeAliases>
  5. ......
  6. </configuration>

但是如果每一个实体类都这样配置还是有点麻烦这时我们可以直接指定package的名字, mybatis会自动扫描指定包下面的javabean,并且默认设置一个别名,默认的名字为: javabean 的首字母小写的非限定类名来作为它的别名(其实别名是不去分大小写的)。也可在javabean 加上注解@Alias 来自定义别名, 例如: @Alias(student)

  1. <typeAliases>
  2. <package name="com.domain"/>
  3. </typeAliases>

这样,在Mapper中我们就不用每次配置都写类的全名了,但是有一个例外,那就是namespace。

namespace属性

在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。

它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理

  1. student = (Student) session.selectOne("com.domain.Student.selectById", new Integer(10));
  1. <mapper namespace="com.domain.Student">
  2.  
  3. <select id="selectById" parameterType="int" resultType="student">
  4. select * from student where id=#{id}
  5. </select>
  6.  
  7. </mapper>

2 Mybitis配置

这里新建一个spring boot程序

2.1 目录结构

2.2 xml文件配置

mybatis-config.xml配置:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2.  
  3. <!DOCTYPE configuration
  4. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  5. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  6. <configuration>
  7. <typeAliases>
  8. <package name="sample.mybatis.domain"/>
  9. </typeAliases>
  10. <mappers>
  11. <mapper resource="mapper/CityMapper.xml"/>
  12. <mapper resource="mapper/HotelMapper.xml"/>
  13. </mappers>
  14. </configuration>

这里要注意别名namespace和mappers的配置。

CityMapper.xml配置:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="sample.mybatis.mapper.CityMapper">
  6. <select id="selectCityById" resultType="City">
  7. select * from city where id = #{id}
  8. </select>
  9. </mapper>

HotelMapper.xml配置:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="sample.mybatis.mapper.HotelMapper">
  6. <select id="selectByCityId" resultType="Hotel">
  7. select * from hotel where city = #{id}
  8. </select>
  9. </mapper>

2.3  Mapper接口、dao实现

HotelMapper.java:

  1. package sample.mybatis.mapper;
  2.  
  3. import org.apache.ibatis.annotations.Mapper;
  4.  
  5. import sample.mybatis.domain.Hotel;
  6.  
  7. /**
  8. * @author Eduardo Macarron
  9. */
  10. @Mapper
  11. public interface HotelMapper {
  12.  
  13. Hotel selectByCityId(int city_id);
  14.  
  15. }
  1. CityDao.java:
  1. package sample.mybatis.dao;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Component;
  6.  
  7. import sample.mybatis.domain.City;
  8.  
  9. /**
  10. * @author Eddú Meléndez
  11. */
  12. @Component
  13. public class CityDao {
  14.  
  15. @Autowired
  16. private SqlSession sqlSession;
  17.  
  18. public City selectCityById(long id) {
  19. return this.sqlSession.selectOne("selectCityById", id);
  20. }
  21.  
  22. }

City.java:

  1. package sample.mybatis.domain;
  2.  
  3. import java.io.Serializable;
  4.  
  5. /**
  6. * @author Eddú Meléndez
  7. */
  8. public class City implements Serializable {
  9.  
  10. private static final long serialVersionUID = 1L;
  11.  
  12. private Long id;
  13.  
  14. private String name;
  15.  
  16. private String state;
  17.  
  18. private String country;
  19.  
  20. public Long getId() {
  21. return this.id;
  22. }
  23.  
  24. public void setId(Long id) {
  25. this.id = id;
  26. }
  27.  
  28. public String getName() {
  29. return this.name;
  30. }
  31.  
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35.  
  36. public String getState() {
  37. return this.state;
  38. }
  39.  
  40. public void setState(String state) {
  41. this.state = state;
  42. }
  43.  
  44. public String getCountry() {
  45. return this.country;
  46. }
  47.  
  48. public void setCountry(String country) {
  49. this.country = country;
  50. }
  51.  
  52. @Override
  53. public String toString() {
  54. return getId() + "," + getName() + "," + getState() + "," + getCountry();
  55. }
  56.  
  57. }

Hotel.java:

  1. package sample.mybatis.domain;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Hotel implements Serializable {
  6.  
  7. private static final long serialVersionUID = 1L;
  8.  
  9. private Long city;
  10.  
  11. private String name;
  12.  
  13. private String address;
  14.  
  15. private String zip;
  16.  
  17. public Long getCity() {
  18. return city;
  19. }
  20.  
  21. public void setCity(Long city) {
  22. this.city = city;
  23. }
  24.  
  25. public String getName() {
  26. return name;
  27. }
  28.  
  29. public void setName(String name) {
  30. this.name = name;
  31. }
  32.  
  33. public String getAddress() {
  34. return address;
  35. }
  36.  
  37. public void setAddress(String address) {
  38. this.address = address;
  39. }
  40.  
  41. public String getZip() {
  42. return zip;
  43. }
  44.  
  45. public void setZip(String zip) {
  46. this.zip = zip;
  47. }
  48.  
  49. @Override
  50. public String toString() {
  51. return getCity() + "," + getName() + "," + getAddress() + "," + getZip();
  52. }
  53.  
  54. }

执行结果:

Mybitis配置文件中的别名以及mapper中的namespace的更多相关文章

  1. 01_MyBatis EHCache集成及所需jar包,ehcache.xml配置文件参数配置及mapper中的参数配置

     1 与mybatis集成时需要的jar ehcache-core-2.6.5.jar mybatis-ehcache-1.0.2.jar Mybatis.日志.EHCache所需要的jar包如下 ...

  2. Mybatis 全局配置文件中typeAliases(别名)

    在具体的mapper.xml文件中,定义很多的statement,statement需要parameterType指定输入参数的类型.需要resultType指定输出结果的映射类型. 如果在指定类型时 ...

  3. Mybatis中是否需要依赖配置文件的名称要和mapper接口的名称一致 params错误

    一:当核心配置文件mapper标签下以resource形式指向依赖配置文件时,不需要 这样就可以加载到其相应的依赖配置文件通过namespace找到其相应的方法 二:如果mapper标签下以packa ...

  4. Mybatis中dao接口和mapper 的加载过程

    这里考虑的是mybatis和spring整合的场景 1.在系统启动的时候,会去执行配置文件中有关扫描mybatis接口的配置:通过MapperScannerConfigurer扫描接口生成spring ...

  5. 关于Mybatis的@Param注解 及 mybatis Mapper中各种传递参数的方法

    原文:https://blog.csdn.net/mrqiang9001/article/details/79520436 关于Mybatis的@Param注解   Mybatis 作为一个轻量级的数 ...

  6. mybitis中对象字段与表中字段名称不匹配(复制)

    开发中,实体类中的属性名和对应的表中的字段名不一定都是完全相同的,这样可能会导致用实体类接收返回的结果时导致查询到的结果无法映射到实体类的属性中,那么该如何解决这种字段名和实体类属性名不相同的冲突呢? ...

  7. Mybatis中的别名的起源

    1.Mybatis中的别名的起源 我们对别名的认识最初是在数据库中,例如:数据库之select时取别名的做法是这样的: select 列名 as 列别名,//方法1 列名 列别名,//方法2 from ...

  8. SQL语句Where中使用别名作为判断条件

    当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.   例如下面的SQL语句: select id, (c1 + c2) as s from t1  where ...

  9. ASM中的别名

    在ASM中的别名,是为了方便管理. 在ASM中创建别名,一种是在RDBMS中创建,另外一种是在ASM中创建,区别就是在ASM中创建的别名,在RDBMS中是不可见的. 在RDBMS中创建别名: SQL& ...

随机推荐

  1. [codeforces167B]Wizards and Huge Prize

    B. Wizards and Huge Prize time limit per test: 2 seconds memory limit per test: 256 megabytes input: ...

  2. 尝试向树莓派3B引入Drbian 9 arm64-PART 1

    Stage 1:试图加入arm64软件包 笔者默认您清楚这些指令背后的意义以及其可能造成的后果,并默认您已备份重要资料 sudo dpkg --add-archietcture arm64 sudo ...

  3. C# ftp 图片上传多快好省

    前言 此篇讲到的是图片上传功能,每个网站必定会有这样类似的功能,上传文件.上传图片等等.那么接下来,看看我们EF+uploadfile+ftp如何玩转上传图片吧 效果预览 具体实现 一个简单数据库 只 ...

  4. find的用法

    find在Linux系统中和其它工具,如sed.awk.grep等结合起来用,非常有用. 1.列出系统中所有属于root用户的“set uid”文件 #find / -perm 4755 –uid 0 ...

  5. 优化tomcat配置(从内存、并发、缓存4个方面)优化

    Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数 ...

  6. Why you should QC your reads AND your assembly?

    鲤鱼基因组:http://www.ntv.cn/a/20140923/52953.shtml   关于鲤鱼基因组的测定,数据质量控制遭到质疑. Why you should QC your reads ...

  7. .NET Core程序中使用User Secrets存储敏感数据

    前言 在开发中经常会用到一些敏感数据,比如AppSecret或数据库连接字符串,无论是硬编码还是写在配置文件中,最终都要push到svn或git上.对于开源项目,这些敏感数据就无隐私可言了,对于私有项 ...

  8. vmware安装FreeBSD8.3全攻略【教程】

    原始日期:2013-08-02 23:15 前言:花了两天时间倒腾这个freebsd,安装并不简单,如果单单参照百度上的教程是会遇到各种问题的,所以我打算自己写一篇教程,为了更加直观,部分采用了互联网 ...

  9. Java8 Lambda/Stream使用说明

    一.Stream流1. 流的基本概念 1.1 什么是流?流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合.众所周知,集合操作非常麻烦,若要对集合进行筛选.投影,需要 ...

  10. solr 搜索引擎查询

    搜索引擎查询的时候://对于这些filterQuery的字段,必须是indexed="true",如果之前有这个字段后来改这个indexed属性,则需要重新建立索引,否则搜索不到S ...