zoukankan      html  css  js  c++  java
  • 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();
        }
        
    }

    执行结果:

  • 相关阅读:
    CKA&CKAD考试
    进程线程和协程
    HTTP协议
    Centos操作系统启动流程
    高并发下的Linux内核参数优化
    DDoS防护系统建设的一些思路
    DDoS防护实现概述
    Nginx故障排查思路
    git常用指令集
    DNS实现粗粒度容灾
  • 原文地址:https://www.cnblogs.com/lixuwu/p/5900951.html
Copyright © 2011-2022 走看看