(2)MyBatis框架详解----单表增删改查操作

1.API介绍:在SqlSession接口中提供了四个方法,实现简单的增删改查操作

1)insert方法:实现插入

<?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="User">
    <!--
        id在命名空间中唯一的标识符,可以被用来引用这条语句
        #{参数名} :实体类对象或则Map集合读取内容
     -->
    <insert id="insertUser">
      insert into user (name,sex,age) values (#{name},#{sex},#{age})
    </insert>
    <!--
    在JDBC技术中,可以通过Statement接口中getGeneratedKeys()方法获得本次插入后得到自动增长主键值.
     MyBatis框架也采用这个技术.因此MyBatis在插入完毕后也可以获得本次插入数据id.做法如下
     useGeneratedKeys="true":表示Mybatis可以通过getGeneratedKeys方法获取本次自动增长的值
     keyProperty="id":表示Mybatis将通过自动增长值赋值给当前实体类对象的那个属性
     比如:session.insert("insertUser_generatedkey",user);
          System.out.println(user.getId());
          那么,在插入完成后,user.id里面会存在本次插入生成的id
     -->
    <insert id="insertUser_generatedkey" useGeneratedKeys="true" keyProperty="id">
      insert into user (name,sex,age) values (#{name},#{sex},#{age})
    </insert>
    <!--
       在Mysql数据库中,可以通过max函数获得当前表中最后一条插入数据id.
        在MyBatis中,也可以通过这种方式来获得主键值做法如下:
        selectKey标签用于申明当前表主键值的sql语句
        resultType="Integer":表明将查询结果转换成Integer类型
        order="BEFORE":如果设置为 BEFORE,那么它会首先生成主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 中的语句
        useGeneratedKeys="true":表示Mybatis可以通过getGeneratedKeys方法获取本次自动增长的值
        keyProperty="id":表示Mybatis将通过自动增长值赋值给当前实体类对象的那个属性
        比如:session.insert("insertUser_max",user);
             System.out.println(user.getId());
             那么,在插入完成后,user.id里面会存在本次插入生成的id
        -->
    <insert id="insertUser_max" useGeneratedKeys="true" keyProperty="id">
        <selectKey resultType="Integer" keyProperty="id" order="BEFORE">
            select max(id)+1 from user
        </selectKey>
        insert into user (name,sex,age) values (#{name},#{sex},#{age})
    </insert>
</mapper>

2)delete方法:实现删除

 <!--
     根据id删除用户
     int deleteUser = session.delete("deleteUser", user); //返回删除的记录数
     System.out.println(deleteUser);
    -->
    <delete id="deleteUser">
        delete from user where id=#{id}
    </delete>

3)update方法:实现更新

 <!--
     根据id修改用户信息
        int updateUser = session.update("updateUser", user);//返回修改的记录数
        System.out.println(updateUser);
     -->
    <update id="updateUser">
        update user set name=#{name},sex=#{sex},age=#{age} where id=#{id}
    </update>

4)select方法:实现查询

 <!--Map
    parameterType="com.czh.entity.User" 将会传入这条语句的参数类为User的完全限定名或别名
    resultType="hashmap" 从这条语句中返回的期望类型为HashMap的完全限定名或别名
    Map Map =(Map<String,String>)session.selectOne("selectMap", user);
    -->
    <select id="selectMap" resultType="hashmap" parameterType="com.czh.entity.User">
             select * from user where id=#{id}
    </select>

    <!--List
   parameterType="com.czh.entity.User" 将会传入这条语句的参数类为User的完全限定名或别名
   resultType="hashmap" 从这条语句中返回的期望类型为hashmap的完全限定名或别名,注意这里指定的resultType返回的是集合中的元素类型
   List<Map<String,String>> selectList = session.selectList("selectList", user);
   -->
    <select id="selectList" resultType="hashmap" parameterType="com.czh.entity.User">
             select * from user where id &gt;= #{id}
    </select>
    <!--实体映射类
    parameterType="com.czh.entity.User" 将会传入这条语句的参数类为User的完全限定名或别名
    com.czh.entity.User 从这条语句中返回的期望类型为com.czh.entity.User的完全限定名或别名
    User User = session.selectOne("selectUser", user);
    -->
    <select id="selectUser" resultType="com.czh.entity.User" parameterType="com.czh.entity.User">
             select * from user where id=#{id}
    </select>

    <!--实体映射类集合
    parameterType="com.czh.entity.User" 将会传入这条语句的参数类为User的完全限定名或别名
    com.czh.entity.User 从这条语句中返回的期望类型为com.czh.entity.User的完全限定名或别名 注意这里指定的resultType返回的是集合中的元素类型
     List<User> list = session.selectList("selectUsers", user);
    -->
    <select id="selectUsers" resultType="com.czh.entity.User" parameterType="com.czh.entity.User">
             select * from user where id &gt;= #{id}
    </select>

2.xml文件特殊字符处理

第一种方法:

    使用转义字符

    大于号    >    &gt;
    小于号    <    &lt; 
      与    &    &amp;
    单引号    "    &apos;
    双引号    '    &quot;

第二种方法:

    使用<![CDATA[  ]]> 。因为xml格式遇到这种格式会把方括号里的内容原样输出,不进行解析,如:

    >=               改成                     <![CDATA[ >= ]]>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值