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();
} }

执行结果:

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. springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)

    一.什么是REST? 符合REST约束风格和原则的应用程序或者设计就是REST 例如: /blog/1   HTTP GET    =>查询id=1的blog /blog/1   HTTP DE ...

  2. Linux 安装配置 Tomcat

    1.下载 tomcat Linux 版本 oracle 官网下载地址:http://tomcat.apache.org/download-80.cgi 百度云盘链接:http://pan.baidu. ...

  3. homebrew & brew cask使用技巧及Mac软件安装

    homebrew 安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...

  4. Android界面(1) 使用TextView实现跑马灯效果

    方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...

  5. 新增article注意事项

    默认情况下在日志复制中如果新增加Article那么需要产生一个包含所有Article的Snapshot.由于产生Snapshot会加锁,同时会产生IO操作,所以对于大的数据库性能影响是很大的. 可以通 ...

  6. 微信授权登录(PHP)

    微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用 ...

  7. 代码管理器 TFS2013

    多人开发代码管理器肯定是少不了的,出于项目需要在服务器上装了tfs2013用于代码管理,既然用vs进行开发自然选择微软自家的tfs.记录下安装和使用起来的过程. 安装 TFS2013(Team Fou ...

  8. PHP:win7 ASP.NET环境与PHP(WAMP)环境如何共存

    经验地址:http://jingyan.baidu.com/article/495ba8410f794d38b30ede89.html 笔记本以前安装过asp.net,启用了Windows的IIS服务 ...

  9. FreeMaker开发教程

    FreeMaker简介 FreeMaker其实是一种比较简单的网页展示技术,说白了就是网页模板和数据模型的结合体.这种结合模式的好处就是,分离了网页界面设计人员和编程人员的工作,让他们各司其职. 据个 ...

  10. B. Karen and Coffee

    B. Karen and Coffee time limit per test 2.5 seconds memory limit per test 512 megabytes input standa ...