Mybitis配置文件中的别名以及mapper中的namespace

1 基本知识

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

别名的基本用法:

<configuration>
    <typeAliases>
      <typeAlias type="com.domain.Student" alias="Student"/>
  </typeAliases>
  ......
</configuration>

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

<typeAliases>
    <package name="com.domain"/>
</typeAliases>

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

namespace属性

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

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

student = (Student) session.selectOne("com.domain.Student.selectById", new Integer(10));  
<mapper namespace="com.domain.Student">    

    <select id="selectById" parameterType="int" resultType="student">
       select * from student where id=#{id}
    </select>  

</mapper>  

2 Mybitis配置

这里新建一个spring boot程序

2.1 目录结构

2.2 xml文件配置

mybatis-config.xml配置:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <package name="sample.mybatis.domain"/>
    </typeAliases>
    <mappers>
        <mapper resource="mapper/CityMapper.xml"/>
        <mapper resource="mapper/HotelMapper.xml"/>
    </mappers>
</configuration>

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

CityMapper.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">
<mapper namespace="sample.mybatis.mapper.CityMapper">
    <select id="selectCityById" resultType="City">
        select * from city where id = #{id}
    </select>
</mapper>

HotelMapper.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">
<mapper namespace="sample.mybatis.mapper.HotelMapper">
    <select id="selectByCityId" resultType="Hotel">
        select * from hotel where city = #{id}
    </select>
</mapper>

2.3  Mapper接口、dao实现

HotelMapper.java:

package sample.mybatis.mapper;

import org.apache.ibatis.annotations.Mapper;

import sample.mybatis.domain.Hotel;

/**
 * @author Eduardo Macarron
 */
@Mapper
public interface HotelMapper {

    Hotel selectByCityId(int city_id);

}
CityDao.java:
package sample.mybatis.dao;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import sample.mybatis.domain.City;

/**
 * @author Eddú Meléndez
 */
@Component
public class CityDao {

    @Autowired
    private SqlSession sqlSession;

    public City selectCityById(long id) {
        return this.sqlSession.selectOne("selectCityById", id);
    }

}

City.java:

package sample.mybatis.domain;

import java.io.Serializable;

/**
 * @author Eddú Meléndez
 */
public class City implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String name;

    private String state;

    private String country;

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getState() {
        return this.state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getCountry() {
        return this.country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return getId() + "," + getName() + "," + getState() + "," + getCountry();
    }

}

Hotel.java:

package sample.mybatis.domain;

import java.io.Serializable;

public class Hotel implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long city;

    private String name;

    private String address;

    private String zip;

    public Long getCity() {
        return city;
    }

    public void setCity(Long city) {
        this.city = city;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getZip() {
        return zip;
    }

    public void setZip(String zip) {
        this.zip = zip;
    }

    @Override
    public String toString() {
        return getCity() + "," + getName() + "," + getAddress() + "," + getZip();
    }

}

执行结果:

时间: 2024-10-12 15:28:48

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

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 EHCache与mybatis集成 EHCache是一种广泛使用java分布式缓存通用缓存,JavaEE中的一个轻量级的容器. EHCache集成是基于ehcache-core,没有任何其它第三方应用程序. 想使用EHCache到她们的应用程序的用户,必须下载EHCache的zip bund

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

开发中,实体类中的属性名和对应的表中的字段名不一定都是完全相同的,这样可能会导致用实体类接收返回的结果时导致查询到的结果无法映射到实体类的属性中,那么该如何解决这种字段名和实体类属性名不相同的冲突呢? 方法一:通过在查询的SQL语句中定义字段名的别名的方式,让字段名的别名和实体类中的属性名一致,这样就可以实现实体类属性和表字段一一对应.(通过在SQL语句中定义别名的方法实现) [html] view plain copy <select id="queryCertificationInfo

024_MapReduce中的基类Mapper和基类Reducer

内容提纲 1) MapReduce中的基类Mapper类,自定义Mapper类的父类. 2) MapReduce中的基类Reducer类,自定义Reducer类的父类. 1.Mapper类 API文档 1) InputSplit输入分片,InputFormat输入格式化 2) 对Mapper输出结果进行Sorted排序和Group分组 3) 对Mapper输出结果依据Reducer个数进行分区Patition 4) 对Mapper输出数据进行Combiner 在Hadoop官方文档的Mapper

在Mapper中进行循环判断

1.在Bo中将值保存在list中 2. 在Mapper中根据 保存的集合中的值进行取值

转载:SQL语句Where中使用别名作为判断条件

原文地址:http://www.cnblogs.com/dwfbenben/p/3307941.html 当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.   例如下面的SQL语句: select id, (c1 + c2) as s from t1  where s > 100   SQL Server 报错: "列名 s 无效"     当然,写成     select id, (c1 + c2) as s from t1  where

如何在Global Mapper中打开谷歌卫星地图

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装Global Mapper,版本可以是11.12.13.14.15或16,这里以Global Mapper 14为例. 二.下载地图 首先需要把谷歌卫星地图下载下来,这里以"郫县"为例. 启动水经注万能地图下载器,在查询定位中输入"郫县". 点击"搜索"按钮出现该县的行政边界,在行政边界内双击,开始新建任务. 在级别列表中,

如何在 Global Mapper中打开谷歌卫星地图

一.准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度"水经注软件"到官方网站下载. 安装Global Mapper,版本可以是11.12.13.14.15或16,这里以Global Mapper 14为例. 二.下载地图 首先需要把谷歌卫星地图下载下来,这里以"郫县"为例. 启动水经注万能地图下载器,在查询定位中输入"郫县". 点击"搜索"按钮出现该县的行政边界,在行政边界内双击,开始新建任务. 在级别列表中,

php中的curl】php中curl的详细解说

本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些: HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上传文件断点续传,htt

Strut2中的session和servlet中的session的区别

在jsp中,内通过内置对象 HttpServletRequest的getSession()方法可以获取到HttpSession,比如: 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@taglib uri="http://www.wyl.suneyaee" prefi