`

mybatis

阅读更多

数字#{number, jdbcType=NUMERIC}

字符串#{string, jdbcType=VARCHAR}

大于号<![CDATA[ AND TAB.CREATETIME<=TO_DATE(#{createDate, jdbcType=VARCHAR},'yyyy-mm-ddhh24miss')]]>

 

<!-- 插入学生 自动主键-->  

<insert id="createStudentAutoKey" parameterType="liming.student.manager.data.model.StudentEntity" keyProperty="studentId">  

<selectKey keyProperty="studentId" resultType="String" order="BEFORE">  

select nextval('student')  

</selectKey>  

INSERT INTO STUDENT_TBL(STUDENT_ID,  

STUDENT_NAME,  

STUDENT_SEX,  

STUDENT_BIRTHDAY,  

STUDENT_PHOTO,  

CLASS_ID,  

PLACE_ID)  

VALUES (#{studentId},  

#{studentName},  

#{studentSex},  

#{studentBirthday},  <pre name="code" class="html">    StudentEntity entity = new StudentEntity();  

entity.setStudentName("黎明你好");  

entity.setStudentSex(1);  

entity.setStudentBirthday(DateUtil.parse("1985-05-28"));  

entity.setClassId("20000001");  

entity.setPlaceId("70000001");  

this.dynamicSqlMapper.createStudentAutoKey(entity);  

System.out.println("新增学生ID: " + entity.getStudentId());  </pre><br>

#{studentPhoto, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler}, #{classId}, #{placeId}) </insert>

<pre></pre>

调用接口方法,和获取自动生成key<br>

<pre name="code" class="html">    StudentEntity entity = new StudentEntity();  

    entity.setStudentName("黎明你好");  

    entity.setStudentSex(1);  

    entity.setStudentBirthday(DateUtil.parse("1985-05-28"));  

    entity.setClassId("20000001");  

    entity.setPlaceId("70000001");  

    this.dynamicSqlMapper.createStudentAutoKey(entity);  

    System.out.println("新增学生ID: " + entity.getStudentId());  </pre>selectKey语句属性配置细节:<br>

属性     描述     取值<br>

keyProperty     selectKey 语句生成结果需要设置的属性。     <br>

resultType     生成结果类型,MyBatis 允许使用基本的数据类型,包括String 、int类型。     <br>

order     <br>

1:BEFORE,会先选择主键,然后设置keyProperty,再执行insert语句;<br>

2:AFTER,就先运行insert 语句再运行selectKey 语句。     <br>

BEFORE<br>

AFTER<br>

statementType     MyBatis 支持STATEMENT,PREPARED和CALLABLE 的语句形式, 对应Statement ,PreparedStatement 和CallableStatement 响应     <br>

STATEMENT,PREPARED,CALLABLE<br>

<strong>3.2 if标签</strong><br>

if标签可用在许多类型的sql语句中,我们以查询为例。首先看一个很普通的查询:<pre name="code" class="html">    <!-- 查询学生list,like姓名 -->  

    <select id="getStudentListLikeName" parameterType="StudentEntity" resultMap="studentResultMap">  

        SELECT * from STUDENT_TBL ST   

    WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')  

    </select>  </pre>但是此时如果studentName或studentSex为null,此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断,如果值为null或等于空字符串,我们就不进行此条件的判断,增加灵活性。<br>

参数为实体类StudentEntity。将实体类中所有的属性均进行判断,如果不为空则执行判断条件。<br>

<pre name="code" class="html"><!-- 2 if(判断参数) - 将实体类不为空的属性作为where条件 -->  

    <select id="getStudentList_if" resultMap="resultMap_studentEntity" parameterType="liming.student.manager.data.model.StudentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST   

         WHERE  

        <if test="studentName !=null ">  

            ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName, jdbcType=VARCHAR}),'%')  

        </if>  

        <if test="studentSex != null and studentSex != '' ">  

            AND ST.STUDENT_SEX = #{studentSex, jdbcType=INTEGER}  

        </if>  

        <if test="studentBirthday != null ">  

            AND ST.STUDENT_BIRTHDAY = #{studentBirthday, jdbcType=DATE}  

        </if>  

        <if test="classId != null and classId!= '' ">  

            AND ST.CLASS_ID = #{classId, jdbcType=VARCHAR}  

        </if>  

        <if test="classEntity != null and classEntity.classId !=null and classEntity.classId !=' ' ">  

            AND ST.CLASS_ID = #{classEntity.classId, jdbcType=VARCHAR}  

        </if>  

        <if test="placeId != null and placeId != '' ">  

            AND ST.PLACE_ID = #{placeId, jdbcType=VARCHAR}  

        </if>  

        <if test="placeEntity != null and placeEntity.placeId != null and placeEntity.placeId != '' ">  

            AND ST.PLACE_ID = #{placeEntity.placeId, jdbcType=VARCHAR}  

        </if>  

        <if test="studentId != null and studentId != '' ">  

            AND ST.STUDENT_ID = #{studentId, jdbcType=VARCHAR}  

        </if>   

    </select>  </pre><br>

<br>

使用时比较灵活, new一个这样的实体类,我们需要限制那个条件,只需要附上相应的值就会where这个条件,相反不去赋值就可以不在where中判断。<br>

<pre name="code" class="html">    public void select_test_2_1() {  

        StudentEntity entity = new StudentEntity();  

        entity.setStudentName("");  

        entity.setStudentSex(1);  

        entity.setStudentBirthday(DateUtil.parse("1985-05-28"));  

        entity.setClassId("20000001");  

        //entity.setPlaceId("70000001");  

        List<StudentEntity> list = this.dynamicSqlMapper.getStudentList_if(entity);  

        for (StudentEntity e : list) {  

            System.out.println(e.toString());  

        }  

    }  </pre><strong>3.3 if + where 的条件判断</strong><br>

当where中的条件使用的if标签较多时,这样的组合可能会导致错误。我们以在3.1中的查询语句为例子,当java代码按如下方法调用时:<br>

<pre name="code" class="html">    @Test  

    public void select_test_2_1() {  

        StudentEntity entity = new StudentEntity();  

        entity.setStudentName(null);  

        entity.setStudentSex(1);  

        List<StudentEntity> list = this.dynamicSqlMapper.getStudentList_if(entity);  

        for (StudentEntity e : list) {  

            System.out.println(e.toString());  

        }  

    }  </pre>如果上面例子,参数studentName为null,将不会进行STUDENT_NAME列的判断,则会直接导“WHERE AND”关键字多余的错误SQL。<br>

这时我们可以使用where动态语句来解决。这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。<br>

上面例子修改为:<pre name="code" class="html"><!-- 3 select - where/if(判断参数) - 将实体类不为空的属性作为where条件 -->  

    <select id="getStudentList_whereIf" resultMap="resultMap_studentEntity" parameterType="liming.student.manager.data.model.StudentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST   

        <where>  

            <if test="studentName !=null ">  

                ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName, jdbcType=VARCHAR}),'%')  

            </if>  

            <if test="studentSex != null and studentSex != '' ">  

                AND ST.STUDENT_SEX = #{studentSex, jdbcType=INTEGER}  

            </if>  

            <if test="studentBirthday != null ">  

                AND ST.STUDENT_BIRTHDAY = #{studentBirthday, jdbcType=DATE}  

            </if>  

            <if test="classId != null and classId!= '' ">  

                AND ST.CLASS_ID = #{classId, jdbcType=VARCHAR}  

            </if>  

            <if test="classEntity != null and classEntity.classId !=null and classEntity.classId !=' ' ">  

                AND ST.CLASS_ID = #{classEntity.classId, jdbcType=VARCHAR}  

            </if>  

            <if test="placeId != null and placeId != '' ">  

                AND ST.PLACE_ID = #{placeId, jdbcType=VARCHAR}  

            </if>  

            <if test="placeEntity != null and placeEntity.placeId != null and placeEntity.placeId != '' ">  

                AND ST.PLACE_ID = #{placeEntity.placeId, jdbcType=VARCHAR}  

            </if>  

            <if test="studentId != null and studentId != '' ">  

                AND ST.STUDENT_ID = #{studentId, jdbcType=VARCHAR}  

            </if>  

        </where>    

    </select>  </pre><strong>3.4 if + set 的更新语句</strong><br>

当update语句中没有使用if标签时,如果有一个参数为null,都会导致错误。<br>

当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。<br>

使用if+set标签修改后,如果某项为null则不进行更新,而是保持数据库原值。如下示例:<pre name="code" class="html"><!-- 4 if/set(判断参数) - 将实体类不为空的属性更新 -->  

    <update id="updateStudent_if_set" parameterType="liming.student.manager.data.model.StudentEntity">  

        UPDATE STUDENT_TBL  

        <set>  

            <if test="studentName != null and studentName != '' ">  

                STUDENT_TBL.STUDENT_NAME = #{studentName},  

            </if>  

            <if test="studentSex != null and studentSex != '' ">  

                STUDENT_TBL.STUDENT_SEX = #{studentSex},  

            </if>  

            <if test="studentBirthday != null ">  

                STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},  

            </if>  

            <if test="studentPhoto != null ">  

                STUDENT_TBL.STUDENT_PHOTO = #{studentPhoto, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler},  

            </if>  

            <if test="classId != '' ">  

                STUDENT_TBL.CLASS_ID = #{classId}  

            </if>  

            <if test="placeId != '' ">  

                STUDENT_TBL.PLACE_ID = #{placeId}  

            </if>  

        </set>  

        WHERE STUDENT_TBL.STUDENT_ID = #{studentId};      

    </update>  </pre><strong>3.5 if + trim代替where/set标签</strong><br>

       trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。<br>

<strong>3.5.1trim代替where</strong><br>

<pre name="code" class="html"><!-- 5.1 if/trim代替where(判断参数) - 将实体类不为空的属性作为where条件 -->  

    <select id="getStudentList_if_trim" resultMap="resultMap_studentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST   

        <trim prefix="WHERE" prefixOverrides="AND|OR">  

            <if test="studentName !=null ">  

                ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName, jdbcType=VARCHAR}),'%')  

            </if>  

            <if test="studentSex != null and studentSex != '' ">  

                AND ST.STUDENT_SEX = #{studentSex, jdbcType=INTEGER}  

            </if>  

            <if test="studentBirthday != null ">  

                AND ST.STUDENT_BIRTHDAY = #{studentBirthday, jdbcType=DATE}  

            </if>  

            <if test="classId != null and classId!= '' ">  

                AND ST.CLASS_ID = #{classId, jdbcType=VARCHAR}  

            </if>  

            <if test="classEntity != null and classEntity.classId !=null and classEntity.classId !=' ' ">  

                AND ST.CLASS_ID = #{classEntity.classId, jdbcType=VARCHAR}  

            </if>  

            <if test="placeId != null and placeId != '' ">  

                AND ST.PLACE_ID = #{placeId, jdbcType=VARCHAR}  

            </if>  

            <if test="placeEntity != null and placeEntity.placeId != null and placeEntity.placeId != '' ">  

                AND ST.PLACE_ID = #{placeEntity.placeId, jdbcType=VARCHAR}  

            </if>  

            <if test="studentId != null and studentId != '' ">  

                AND ST.STUDENT_ID = #{studentId, jdbcType=VARCHAR}  

            </if>  

        </trim>     

    </select>  </pre><strong>3.5.2 trim代替set</strong><br>

<pre name="code" class="html">    <!-- 5.2 if/trim代替set(判断参数) - 将实体类不为空的属性更新 -->  

    <update id="updateStudent_if_trim" parameterType="liming.student.manager.data.model.StudentEntity">  

        UPDATE STUDENT_TBL  

        <trim prefix="SET" suffixOverrides=",">  

            <if test="studentName != null and studentName != '' ">  

                STUDENT_TBL.STUDENT_NAME = #{studentName},  

            </if>  

            <if test="studentSex != null and studentSex != '' ">  

                STUDENT_TBL.STUDENT_SEX = #{studentSex},  

            </if>  

            <if test="studentBirthday != null ">  

                STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},  

            </if>  

            <if test="studentPhoto != null ">  

                STUDENT_TBL.STUDENT_PHOTO = #{studentPhoto, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler},  

            </if>  

            <if test="classId != '' ">  

                STUDENT_TBL.CLASS_ID = #{classId},  

            </if>  

            <if test="placeId != '' ">  

                STUDENT_TBL.PLACE_ID = #{placeId}  

            </if>  

        </trim>  

        WHERE STUDENT_TBL.STUDENT_ID = #{studentId}  

    </update>  </pre>

<p><strong>3.6 choose (when, otherwise)  </strong><br>

</p>

<p>有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为true,就会执行if标签中的条件。MyBatis提供了choose 元素。if标签是与(and)的关系,而choose比傲天是或(or)的关系。  choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。</p>

例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。<pre name="code" class="html"><!-- 6 choose(判断参数) - 按顺序将实体类第一个不为空的属性作为where条件 -->  

    <select id="getStudentList_choose" resultMap="resultMap_studentEntity" parameterType="liming.student.manager.data.model.StudentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST   

        <where>  

            <choose>  

                <when test="studentName !=null ">  

                    ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName, jdbcType=VARCHAR}),'%')  

                </when >  

                <when test="studentSex != null and studentSex != '' ">  

                    AND ST.STUDENT_SEX = #{studentSex, jdbcType=INTEGER}  

                </when >  

                <when test="studentBirthday != null ">  

                    AND ST.STUDENT_BIRTHDAY = #{studentBirthday, jdbcType=DATE}  

                </when >  

                <when test="classId != null and classId!= '' ">  

                    AND ST.CLASS_ID = #{classId, jdbcType=VARCHAR}  

                </when >  

                <when test="classEntity != null and classEntity.classId !=null and classEntity.classId !=' ' ">  

                    AND ST.CLASS_ID = #{classEntity.classId, jdbcType=VARCHAR}  

                </when >  

                <when test="placeId != null and placeId != '' ">  

                    AND ST.PLACE_ID = #{placeId, jdbcType=VARCHAR}  

                </when >  

                <when test="placeEntity != null and placeEntity.placeId != null and placeEntity.placeId != '' ">  

                    AND ST.PLACE_ID = #{placeEntity.placeId, jdbcType=VARCHAR}  

                </when >  

                <when test="studentId != null and studentId != '' ">  

                    AND ST.STUDENT_ID = #{studentId, jdbcType=VARCHAR}  

                </when >  

                <otherwise>  

                </otherwise>  

            </choose>  

        </where>    

    </select>  </pre><strong>3.7 foreach</strong><br>

对于动态SQL 非常必须的,主是要迭代一个集合,通常是用于IN 条件。List 实例将使用“list”做为键,数组实例以“array” 做为键。<br>

foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。<br>

注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。<br>

这个部分是对关于XML配置文件和XML映射文件的而讨论的。下一部分将详细讨论Java API,所以你可以得到你已经创建的最有效的映射。<br>

3.7.1参数为array示例的写法<br>

<pre name="code" class="html">接口的方法声明:

    public List<StudentEntity> getStudentListByClassIds_foreach_array(String[] classIds);  

动态SQL语句:

    <!— 7.1 foreach(循环array参数) - 作为where中in的条件 -->  

    <select id="getStudentListByClassIds_foreach_array" resultMap="resultMap_studentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST  

          WHERE ST.CLASS_ID IN   

         <foreach collection="array" item="classIds"  open="(" separator="," close=")">  

            #{classIds}  

         </foreach>  

    </select>  </pre>测试代码,查询学生中,在20000001、20000002这两个班级的学生:<br>

<pre name="code" class="html">接口的方法声明:

    public List<StudentEntity> getStudentListByClassIds_foreach_array(String[] classIds);  

动态SQL语句:

    <!— 7.1 foreach(循环array参数) - 作为where中in的条件 -->  

    <select id="getStudentListByClassIds_foreach_array" resultMap="resultMap_studentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST  

          WHERE ST.CLASS_ID IN   

         <foreach collection="array" item="classIds"  open="(" separator="," close=")">  

            #{classIds}  

         </foreach>  

    </select>  </pre><strong>3.7.2参数为list示例的写法</strong><br>

接口的方法声明:<br>

    public List<StudentEntity> getStudentListByClassIds_foreach_list(List<String> classIdList);  <br>

动态SQL语句:<br>

<pre name="code" class="html">    <!-- 7.2 foreach(循环List<String>参数) - 作为where中in的条件 -->  

    <select id="getStudentListByClassIds_foreach_list" resultMap="resultMap_studentEntity">  

        SELECT ST.STUDENT_ID,  

               ST.STUDENT_NAME,  

               ST.STUDENT_SEX,  

               ST.STUDENT_BIRTHDAY,  

               ST.STUDENT_PHOTO,  

               ST.CLASS_ID,  

               ST.PLACE_ID  

          FROM STUDENT_TBL ST  

          WHERE ST.CLASS_ID IN   

         <foreach collection="list" item="classIdList"  open="(" separator="," close=")">  

            #{classIdList}  

         </foreach>  

    </select>  </pre>测试代码,查询学生中,在20000001、20000002这两个班级的学生:<pre name="code" class="html">    @Test  

    public void test7_2_foreach() {  

        ArrayList<String> classIdList = new ArrayList<String>();  

        classIdList.add("20000001");  

        classIdList.add("20000002");  

        List<StudentEntity> list = this.dynamicSqlMapper.getStudentListByClassIds_foreach_list(classIdList);  

        for (StudentEntity e : list) {  

            System.out.println(e.toString());  

        }  

    }</pre><br>

出处: http://limingnihao.iteye.com/blog/782190

 

分享到:
评论

相关推荐

    MYBATISMYBATISMYBATISMYBATIS

    MYBATISMYBATIS

    Mybatis框架基础

    Mybatis框架基础 Mybatis是一个流行的关系型数据库访问框架,它的主要目的是为了简化Java开发者对数据库操作的复杂性,提供了一种快速实现数据访问的方法。在传统的Java开发中,使用JDBC(Java Database ...

    mybatis demo

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨MyBatis的一些核心概念和实践应用。 首先,`...

    mybatis3.5.6

    学习mybatis 不创建maven 需要下载jar包 但是在GitHub上下载实在是太慢了,有时还可能下载不了。分享一下

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    MybatisX-1.5.7

    MybatisX是一个强大的Mybatis扩展框架,旨在简化Mybatis在实际开发中的使用,提高开发效率。版本1.5.7是该框架的一个稳定版本,它包含了一系列优化和新功能,以满足开发者的需求。 MybatisX的核心特性包括: 1. **...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    mybatis慢SQL插件

    基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...

    MyBatis 官方笔记 + MyBatis 3.5.10 官方英文文档

    **MyBatis 知识点概述** MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行...

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...

    MyBatisDemo

    【MyBatisDemo】是一个基于Java的持久层框架,它主要负责数据库的CRUD(创建、读取、更新、删除)操作。MyBatis通过简化SQL的处理,将数据库操作与业务逻辑解耦,提高了开发效率。这个项目演示了如何在实际应用中...

    MyBatis全套JAR包

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    MybatisX-1.4.17.zip

    MybatisX是一款专为开发人员设计的高效能且完全免费的IntelliJ IDEA插件,其版本号为1.4.17。这款插件针对Mybatis框架进行了深度优化,旨在提升开发者的开发效率和代码质量。MybatisX的主要功能包括但不限于SQL跳转...

    idea离线安装mybatis-X插件

    IntelliJ IDEA作为一款广受欢迎的IDE,提供了丰富的插件生态,其中Mybatis-X插件就是专为Mybatis开发者设计的,旨在提升Mybatis开发的便捷性与效率。然而,在某些特定情况下,开发者可能需要在没有网络连接的环境中...

    MyBatis.pdf

    MyBatis 详解 MyBatis 是一个基于 Java 的持久层框架,它提供了一个简单的方式来交互数据库。下面是 MyBatis 的详解: MyBatis 基本概念 MyBatis 是一个基于传统 DAO 模式开发的框架,提供了一个简单的方式来交互...

    Mybatis整合人大金仓

    说明:有关国产数据库完整的博客太少了,所以就想弄一个完整的专栏给大家提供一些帮助。在现在这种国际形势下,网络安全是每个企业,乃至整个国家重中之重的事,国产化是一种趋势,在整合之前先了解一下达梦数据库。...

    mybatis-3.5.13.jar

    mybatis-3.5.13.jar

    mybatis-3.5.10.zip

    MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and...

Global site tag (gtag.js) - Google Analytics