mybatis的sqlMapper.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文件的头部,定义使用UTF-8的编码,然后定义是个mapper文件。dtd的文件引入可以让mapper文件的标签自动生成。

<mapper namespace="com.test.dao.TablesInfoDao" ><!--mapper标签包含了除了头部以外的所有内容,里面包含了对resultType,paramaterType的,还有对象里的所有属性定义。此处namespace定义的是对应的dao-->
    <resultMap id="ResultMap" type="com.test.beans.TablesInfo" >  
    <!--此处定义结果集是对象本身和id,此处id查询全表时可以作为resultMap使用-->
        <id column="TABLE_ID" property="table_id" jdbcType="BIGINT" />
        <result column="TABLE_NAME" property="table_name" jdbcType="VARCHAR" />
        <result column="TABLE_SCHEMA" property="table_schema" jdbcType="VARCHAR" />
        <result column="OWNER_NAME" property="owner_name" jdbcType="VARCHAR" />
        <!--对象的实体类里包含的属性一一定义,column表字段当然一个对象里面并不是全部的一个表的字段,有可能包含了其他表字段,property是代表属性,jdbcType是代表字段类型是跟表里定义的一致-->
    </resultMap>
        <sql id="Column_List" ><!--此处定义这个所有字段的列表,为了写查询的时候方便,定义一个全局的,使用的时候如下面的直接<include refid="Column_List">即可-->
        TABLE_ID,TABLE_NAME,TABLE_SCHEMA,OWNER_NAME
    </sql>
<insert id="insert" parameterType="com.test.beans.TablesInfo" >
        insert into tb_tables (TABLE_ID,TABLE_NAME,TABLE_SCHEMA,OWNER_NAME)
        values (#{table_id,jdbcType=BIGINT}, #{table_name,jdbcType=VARCHAR},#{table_schema,jdbcType=VARCHAR},
        #{owner_name,jdbcType=VARCHAR})
</insert>
<!--以上是一个insert语句,id是dao层的方法名,参数类型就是对象的实体类跟最上面对应,#{table_id}为dao前面携带参数,后面跟着jdbcType的字段类型值。-->

<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
        DELETE  from tb_tables
        where TABLE_ID = #{table_id,jdbcType=BIGINT}
</delete>
<!--以上是一个delete语句,id是dao层的方法名,参数类型是long类型的包装类,#{table_id}为dao前面携带参数,后面跟着jdbcType的字段类型值。-->
 <update id="update" parameterType="com.test.beans.TablesInfo" >
        update  tb_tables
        <set>
          TABLE_NAME = #{table_name,jdbcType=VARCHAR},
          TABLE_SCHEMA = #{table_schema,jdbcType=VARCHAR},
          OWNER_NAME = #{owner_name,jdbcType=VARCHAR}
        </set>
        where TABLE_ID = #{table_id,jdbcType=BIGINT}
</update>
<!--以上是一个update语句,id是dao层的方法名,参数类型是这个对象类型,#{table_id}为dao前面携带参数,后面跟着jdbcType的字段类型值。-->
<select id="selectAllTables" resultMap="ResultMap" ><!--此处是查询sql,id是dao层的方法名,resultMap是按照上面的id写的-->
        select
        <include refid="Column_List" />
        from tb_tables
</select>
<select id="selectByPrimaryKey" resultType="java.lang.Integer" parameterType="java.lang.Long" ><!--此处id对应dao层方法,结果类型是int的包装类,参数参数类型是long类型的包装类。这里的type都写的是包装类-->
        select
        COUNT(1)
        from tb_tables
        where TABLE_ID = #{table_id,jdbcType=BIGINT}<!--此处#{table_id}是前面的传参-->
</select>
</mapper>

备注:
如果参数类型是多个String类型,非对象,非java.util.Map,一定要在dao里面的参数前面加上@Param(“tableName”)(@Param(“tableName”) String tableName,@Param(“tableSchema”) String tableSchema)
此举是为了让dao层参数能够准确对应参数。

猜你喜欢

转载自blog.csdn.net/weixin_40197494/article/details/84848619