码迷,mamicode.com
首页 > 其他好文 > 详细

初识Mybatis

时间:2018-03-03 14:01:41      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:soc   引入   修改   联想   默认   flush   pre   package   set   

Mybatis核心配置文件

<!-- version:版本,encoding:字符集 -->
<?xml version="1.0" encoding="UTF-8" ?>

<!--引入核心配置文件的DTD文件,实现节点元素与属性的自动联想-->
<!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--配置文件的根元素节点-->
<configuration>

    <!--通过resource属性从外部指定properties属性文件,该属性文件描述数据库连接的相关配置,位置在/resources目录下-->
    <properties resource="jdbc.properties"></properties>

    <!--设置Mybatis运行中的一些行为-->
    <settings>

        <!--配置Mybatis的log实现为LOG4J-->
        <!--<setting name="logImpl" value="LOG4J"></setting>-->

        <!--Mybatis对于resultMap自动映射的匹配级别(NONE:取消自动映射,PARTIAL:自动映射没有定义嵌套结果集映射的结果集,FULL:自动映射任意复杂的结果集(无论是否嵌套))-->
        <setting name="autoMappingBehavior" value="FULL"></setting>

        <!--全局性设置延迟加载(true:开启,false:关闭)-->
        <setting name="lazyLoadingEnabled" value="true"></setting>

        <!--侵入式延迟加载(true:开启,false:关闭)-->
        <setting name="aggressiveLazyLoading" value="false"></setting>

        <!--二级缓存(true:开启,false:关闭)-->
        <setting name="cacheEnabled" value="true"></setting>

    </settings>

    <!--别名-->
    <typeAliases>

        <!--包名-->
        <package name="cn.ls.entity"></package>

        <!--类的别名-->
        <!--<typeAlias type="别名" alias="全类名"></typeAlias>-->

    </typeAliases>

    <!--environments:环境,配置Mybatis多套运行环境,将SQL映射到多个不同的数据库上,可配置多个environment子元素节点,必须通过default属性制定一个默认的运行环境-->
    <environments default="development">

        <!--environment:环境变量,配置Mybatis的一套运行环境,需要指定运行环境ID、事务管理、数据源配置等相关信息-->
        <environment id="development">

            <!--transactionManager:事务管理器,采用JDBC的事务管理-->
            <transactionManager type="JDBC"/>

            <!--dataSource:数据源,type(POOLED:Mybatis自带的数据源,JNDI:基于tomcat的数据源)-->
            <dataSource type="POOLED">

                <!--根据jdbc.properties文件配置相对应的属性-->
                <property name="url" value="${jdbc.url}"/>
                <property name="driver" value="${jdbc.driver}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>

            </dataSource>

        </environment>

    </environments>

    <!--mappers:映射器,告诉Mybatis去哪里找SQL映射文件-->
    <mappers>

        <!--指定SQL映射文件的路径,resource:SQL映射文件的类资源路径-->
        <mapper resource="cn/ls/dao/DeptDao.xml"/>
        <mapper resource="cn/ls/dao/EmpDao.xml"/>

    </mappers>

</configuration>

MybatisSQL映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--引入SQL映射文件的DTD文件,实现节点元素与属性的自动联想-->
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--映射文件的根节点,namespace:用于区分不同的mapper,全局唯一,注意:将此mapper文件引入到mybatis-config.xml文件中才能生效-->
<mapper namespace="cn.ls.dao.ExampleDao">

    <!--配置指定命名空间的缓存-->
    <!--eviction:缓存清理策略,默认为LRU,flushInterval:缓存刷新时间间隔,默认为不设置-->
    <!--size:最大存储缓存数,默认为1024,readOnly:对象是否能被修改,true为只读-->
    <cache eviction="FIFO" flushInterval="66666" size="1024" readOnly="true"/>

    <!--表示查询语句,id(该命名空间下的唯一标识符,可以被用来引用该节点中的SQL语句,值为同名接口中的方法名),resultType(表示SQL语句的返回值类型)-->
    <!--resultType可以替换为resultMap,resultMap的值为resultMap节点的id-->
    <select id="" resultType="">
         --查询语句
    </select>

    <!--增删改除节点名不同,其他相同-->
    <!--表示插入语句,没有resultType属性,返回值为int类型,id(该命名空间下的唯一标识符,可以被用来引用该节点中的SQL语句,值为同名接口中的方法名)-->
    <insert id="">

        --插入语句

     --执行完插入语句后返回插入到数据库中所对应的ID,resultType:返回值类型,keyProperty:指定返回的是哪一列的值
        <selectKey resultType="int" keyProperty="">
            SELECT @@IDENTITY
        </selectKey>

    </insert>

    <!--结果集,id:resultMap节点的唯一标识,type:resultMap的映射结果类型-->
    <resultMap id="" type="">

        <!--使用id节点绑定主键列和对应的实体类中的属性,设置此项可以提高Mybatis的性能,column:数据表中的列,property:映射结果类型中的属性-->
        <id column="" property=""></id>

        <!--映射到映射结果类型中的‘简单类型’属性-->
        <result column="" property=""></result>

        <!--映射到映射结果类型中的‘复杂类型’属性,仅处理一对一的关联关系-->
        <!--property:映射结果类型中的‘复杂类型’属性,javaType:返回类型(该‘复杂类型’属性的类型)-->
        <!--select:select节点的id(调用该id对应节点中的SQL映射语句),column:数据表中的列名(使用#{列名}获得对应的值)-->
        <!--select与column在使用单条SQL时不需要-->
        <association property="" javaType="" select="" column="">

            <!--使用id节点绑定主键列和对应的实体类中的属性,设置此项可以提高Mybatis的性能,column:数据表中的列,property:映射结果类型中的属性-->
            <id column="" property=""></id>

            <!--映射到映射结果类型中的‘简单类型’属性-->
            <result column="" property=""></result>

        </association>

        <!--映射到映射结果类型中的‘复杂类型’集合属性,处理一对多的关联关系-->
        <!--property:映射结果类型中的‘复杂类型’集合属性,ofType:集合所包含的‘复杂类型’-->
        <!--select:select节点的id(调用该id对应节点中的SQL映射语句),column:数据表中的列名(使用#{列名}获得对应的值)-->
        <!--select与column在使用单条SQL时不需要-->
        <collection property="" ofType="" select="" column="">

            <!--使用id节点绑定主键列和对应的实体类中的属性,设置此项可以提高Mybatis的性能,column:数据表中的列,property:映射结果类型中的属性-->
            <id column="" property=""></id>

            <!--映射到映射结果类型中的‘简单类型’属性-->
            <result column="" property=""></result>

        </collection>

    </resultMap>

</mapper>

SQL映射文件对应的DAO接口

public interface ExampleDao {

//  传入一个基本数据类型参数时,在对应的xml文件中直接用#{参数名}获得参数值
//  传入多个基本数据类型参数时,需要在参数类型前加@Param("注解名")为参数设置注解名(@Param("exampleId")Integer id)在对应的xml文件中#{注解名}获得参数值
//  否则使用#{索引值}获取参数值,索引从零开始

//  传入一个自定义类型的参数时,在对应的xml文件中直接使用#{属性名}获取该对象对应属性的值
//  传入多个自定义类型参数时,若设置了注解名,则使用#{注解名.属性名}获取该对象对应属性的值
//  否则,则使用#{索引值.属性名}获取该对象对应属性的值,索引从零开始

//  传入一个Map集合类型的参数时,直接使用#{Map集合中的key值}获取对应的值

    public Integer insertExample(Example example);

}

 

POM文件设置

在pom文件的根节点元素下插入以下节点来加载所有的SQL映射文件资源

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

资源往往不是代码,无需编译,而是一些properties或XML配置文件,构建过程中会往往会将资源文件从源路径复制到指定的目标路径。

 

初识Mybatis

标签:soc   引入   修改   联想   默认   flush   pre   package   set   

原文地址:https://www.cnblogs.com/LinShuai/p/8496246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!