zoukankan      html  css  js  c++  java
  • Mybatis Mapper动态代理方式 typeAliases 别名的使用

    目录结构及配置文件与原始dao方法相比更简便

    只需一个UserMapper的接口,放在一起的配置文件,配置文件中namespace的地址确定jdk动态代理的对象

    <?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:命名空间,用于隔离sql -->
    <!-- 使用动态代理开发DAO,1. namespace必须和Mapper接口类路径一致 -->
    <mapper namespace="com.swift.dao.UserMapper">
        <!-- 根据用户id查询用户 -->
        <!-- 2. id必须和Mapper接口方法名一致 -->
        <!-- 3. parameterType必须和接口方法参数类型一致 -->
        <!-- 4. resultType必须和接口方法返回值类型一致 -->
        <select id="queryUserByUsername" parameterType="String"
            resultType="com.swift.pojo.User">
            select * from user where username = #{username}
        </select>
    </mapper>

    Mybatis配置文件的映射部分更加简便

    <?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>
        <properties resource="db.properties"></properties>
    
        <environments default="development">
            <!-- 开发用数据源 -->
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
    
        <!-- 加载sql映射文件 -->
        <mappers>
        <!-- 当把sql映射文件移到和接口文件(jdk代理的方式,无需实现类了)一个包下使用相同文件名(接口改名叫UserMapper.java不叫UserDao了),就可以使用class属性替换resource属性 -->
            <!-- <mapper resource="mapper/UserMapper.xml" /> -->
            <!-- <mapper class="com.swift.dao.UserMapper"/> -->
            <!-- 如果有很多相同名字的接口和映射都放在这个包中,那给个包名就可以加载映射了 -->
            <package name="com.swift.dao"/>
        </mappers>
    </configuration>

     上边的配置文件和映射文件与以往的ssh框架类似

    但还要搞懂Alias 别名

    如果没留心这个,往往会让你晕晕的感觉,不明白谁是谁了,但一旦注意了,还是觉得蛮方便的

    可以单个定义别名
    <typeAlias alias="user" type="com.swift.pojo.User" /> 

    就像给人其了小名,小名其实还是他,以后叫小名就行了

    还可以用包批量定义别名

    <package name="com.swift.dao" />
    <package name="com.swift.pojo" />

    那么这些包下的接口或类就都可以使用小名了(就是类名可以小写了,或者无所谓大小写)

    但注意不要动 动态代理的那个类名,出BuilderException,造不出代理对象

    新的配置文件

    <?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>
        <properties resource="db.properties"></properties>
    
        <typeAliases>
            <!-- 单个别名定义 -->
            <!-- <typeAlias alias="user" type="com.swift.pojo.User" /> -->
            <!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
            <package name="com.swift.dao" />
            <package name="com.swift.pojo" />
        </typeAliases>
    
        <environments default="development">
            <!-- 开发用数据源 -->
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
    
        <!-- 加载sql映射文件 -->
        <mappers>
        <!-- 当把sql映射文件移到和接口文件(jdk代理的方式,无需实现类了)一个包下使用相同文件名(接口改名叫UserMapper.java不叫UserDao了),就可以使用class属性替换resource属性 -->
            <!-- <mapper resource="mapper/UserMapper.xml" /> -->
            <!-- <mapper class="com.swift.dao.UserMapper"/> -->
            <!-- 如果有很多相同名字的接口和映射都放在这个包中,那给个包名就可以加载映射了 -->
            <package name="com.swift.dao"/>
        </mappers>
    </configuration>

    配置文件属性的位置是固定的,因为约束,不能变动

    映射文件如下:

    不知道一定会懵的

  • 相关阅读:
    服务器时钟同步
    vue父组件向子组件传递数值 props
    sql 语句in 使用占位符
    vagrant 打包box 快速部署统一开发环境
    Memcache安装使用 linux系统
    centos 7 搭建lnmp环境搭建 yum 源安装
    vagrant搭建lnmp 环境(环境contos7+php72w+mariaDB10.2)
    linux定时任务 Cron Crontab命令
    vue使用el-upload 跨域上传文件跳坑小记
    vue key得理解
  • 原文地址:https://www.cnblogs.com/qingyundian/p/9270976.html
Copyright © 2011-2022 走看看