一、核心配置文件——sqlMapConfig.xml
核心配置文件用于配置数据库信息,数据库事务以及映射文件***Mapper.xml。一般放置在类路径下。
1.在environments标签下配置数据源和事务。
注:在与spring整合过程中,几乎所有配置都转移到spring配置文件中进行配置,包括映射文件的扫描。
<!-- 配置数据源,事务 -->
<environments default="test">
<environment id="test">
<!-- 事务:JDBC/MANAGED-让jdbc自己管理 -->
<transactionManager type="JDBC"/>
<!-- 数据源:POOLED/UNPOOLED/JNDI -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?charsetEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="deploy">
<transactionManager type="JDBC"/>
<!-- 数据源:POOLED/UNPOOLED/JNDI -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?charsetEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
2.添加映射文件mapper配置。
<mappers>
<mapper resource="com/sys/mapper/PersonMapper.xml"/>
</mappers>
二、映射文件——***Mapper.xml
1.首先要在domain包下定义表对应的实体类。如用户类User。
2.对应为该实体类创建映射文件:UserMapper.xml
注:一般习惯为Mapper创建独立的一个包,所有映射文件都放置在里面,方便配置时进行包扫描。
<?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 namespace="com.sys.mapper.PersonMapper"> <!-- 命名空间,可以随意些,只要不冲突 -->
<!-- 对象映射 -->
<resultMap type="com.sys.domain.Person" id="personRM">
<id property="id" column="ID"/><!-- property="id" 实体对象的属性;column="id" 结果集字段 -->
<result property="userName" column="USER_NAME"/>
<result property="age" column="AGE"/>
</resultMap>
<!-- 列标签 -->
<sql id="cols">
(id,user_name,age)
</sql>
<!-- 查询所有 resultType设置返回值 -->
<select id="findAll" parameterType="com.sys.domain.Person" resultMap="personRM">
<!-- SQL语句 -->
SELECT id,user_name,age FROM person
<where>
<if test="userName!=null">
and user_name=#{userName}
</if>
<if test="age!=null">
and age=#{age}
</if>
</where>
</select>
<!-- 查询一个对象 -->
<select id="get" parameterType="integer" resultMap="personRM">
SELECT id,user_name,age FROM person
WHERE id=#{pid}
</select>
<!-- 记录总数 -->
<select id="count" resultType="integer">
SELECT count(*) FROM person
</select>
<!-- 新增,以实体来封装参数,在sql语句中有参数;隐患sql注入 preparestatement;解决sql注入,通过属性类型判断,如果是整数直接写,如果字符串类型两边加单撇-->
<insert id="insert" parameterType="Person">
INSERT INTO person
(
id,
user_name,
age
)
VALUES
(
#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER}
)
</insert>
<!-- 修改 -->
<update id="update" parameterType="com.sys.domain.Person">
UPDATE person
<set>
user_name=#{userName,jdbcType=VARCHAR},
age=#{age,jdbcType=INTEGER}
</set>
WHERE id=#{id}
</update>
<!-- 删除 -->
<delete id="deleteById" parameterType="integer">
DELETE FROM person
WHERE id=#{xid}
</delete>
<!-- 批量删除 数组参数 -->
<delete id="deleteArray" parameterType="integer">
DELETE FROM person WHERE id IN
<foreach collection="array" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 批量删除 list参数-->
<delete id="deleteList" parameterType="integer">
DELETE FROM person WHERE id IN
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 批量删除 map参数-->
<delete id="deleteMap" parameterType="map">
DELETE FROM person WHERE id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
and age=#{age}
</delete>
</mapper>