我是靠谱客的博主 矮小紫菜,最近开发中收集的这篇文章主要介绍(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)MyBatis框架详解----单表增删改查操作的全部内容,希望文章能够帮你解决(2)MyBatis框架详解----单表增删改查操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部