Mybatis详细学习总结七大点——(三)mapper代理开发

mapper代理开发(掌握)

一、开发人员需要完成的任务:

mapper.xml映射文件和mapper.java

二、开发规范:

在mapper.xml中namespace等于mapper接口地址;
mapper.java接口中的方法名和mapper.xml中statement的id一致;
mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致;
mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

三、代码示例

1、mapper.java示例

//根据id查询用户信息
public User findUserById(int id) throws Exception;

2、mapper.xml示例

<select id="findUserById" parameterType="int" resultType="user">
	SELECT * FROM USER WHERE id=#{value}
</select>

四、在SqlMapConfig.xml中加载mapper.xml

<!-- 通过mapper接口加载单个 映射文件,遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
上边规范的前提是:使用的是mapper代理方法
-->
<mappers>
<mapper class="com.xudan.mybatis.mapper.UserMapper"/>
</mappers>

或者是

<mappers>
<!-- 批量加载mapper
指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
上边规范的前提是:使用的是mapper代理方法
-->
<package name="com.xudan.mybatis.mapper"/>
</mappers>

以上是MyBatis Mapper代理使用方法详解

五、Mybatis增删改查mapper文件写法详解

1、插入

<mapper namespace="需要实现接口的全类名">
 <insert id="需要实现的接口里的方法名" parameterType="方法参数类型,如果是对象要写全类名">
  INSERT sql命令(命令里通过#{}获取对象属性)
  <!--注意属性名区分大小写 -->
 </insert>
<mapper>

例如:

<mapper namespace="com.xudan.dao.UserDao">
 <insert id="addUser" parameterType="com.xudan.domian.User">
  INSERT INTO USERS(USERNAME,PASSWORD) VALUES(#{username},#{password})
 </insert>
</mapper>

2、查询

<select id="方法名" parameterType="方法参数类型" resultType="方法返回值类型,全类名">
 SELECT 表里字段名 AS 结果字段名 FROM 表名 WHERE 条件
 <!--注意:结果字段名与属性名保持一致,区分大小写-->
</select>

例如

<mapper namespace="com.xudan.mybatis.dao.IUserDao">
<!--    查询所有用户信息
    id:跟关联接口中的方法名一致
    parameterType:跟关联接口中的参数列表一致,要求方法中只能有0或者1个参数
    resultType:跟关联接口中的返回值类型一致,要求:实体类中的属性名和对应的表字段名写法完全一致
    注意1:
        1. resultType:对于自定义对象来说,要求:实体类中的属性名和对应的表字段名写法完全一致
            (支持String,基本数据类型,包装类,普通的Map,普通的List)
        2. parameterMap/resultMap:主要是对于我们的自定义对象,要求实体类的属性名可以和对应的表字段名写法不一致
    注意2:不管是输入映射(parameterType/Map)还是输出映射(resultType/resultMap),对于List<T>和<T>写法一致,都是<T>.
        举例:List<User>或者User,输入输出中都写User就可以了
    注意3:
        <select>:支持输入和输出,输出映射是必须的;
        <insert><update><delete>:支持输入映射,不支持输出映射-->
<!--    定义一个resultMap,可以用来封装对象(数据字段名和对象属性名可以不一致)
        id:供<select>调用,type:返回的实际类型-->
    <resultMap id="findUserResultMap" type="User">
<!--    配置主键id
        property:类对应的属性名
        column:表对应的字段名
        javaType:类对应的属性名的类型,一般忽略
        jdbcType:表对应的字段名的类型,jdbc封装后提供,一般忽略-->
        <id property="userId" column="user_id"></id>
        <result property="account" column="account"></result>
        <result property="password" column="password"></result>
        <result property="delFlag" column="del_flag"></result>
    </resultMap>
    <select id="findUsers" resultMap="findUserResultMap">
        select * from users;
    </select>
</mapper>

3、修改
与前面插入除了sql语句基本一致

<update id="updateUser" parameterType="com.xudan.domain.User" > 
  UPDATE USERS SET USERNAME=#{username},P_PASSWORD=#{password} WHERE user_id=#{id}
  <!-- 属性字段名区分大小写 -->
</update>

4、删除
与前面插入除了sql语句基本一致

<delete id="deleteUser" parameterType="java.lang.Integer">
  DELETE FROM USERS WHERE user_id=#{id}
</delete>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值