<?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层参数能够准确对应参数。