MyBatis3-实现单表数据的增删查改
继续前一篇文章http://www.cnblogs.com/EasonJim/p/7050710.html所示的例子,返回的是单个实体,而接下来将进行列表的返回等操作:
一、查询列表
查询出列表,也就是返回List, 在这个例子中也就是List<User>,这种方式返回数据,需要在User.xml里面配置返回的类型resultMap,注意不是resultType,而这个resultMap所对应的应该自己配置的,配置如下:
<!-- 为了返回List,类型而定义的resultMap -->
<resultMap type="User" id="resultListUser">
<id column="id" property="id" />
<result column="userName" property="userName" />
<result column="userAge" property="userAge" />
<result column="userAddress" property="userAddress" />
</resultMap>
查询列表的语句如下:
<!-- 返回List的select语句,注意 resultMap的值是指向前面定义好的 -->
<select id="selectUsers" parameterType="string" resultMap="resultListUser">
select * from user where userName like #{userName}
</select>
而这两个配置都是在mapper节点中的。
在IUserOperation接口中增加方法:
public List<User> selectUsers(String userName);
接下来是测试代码的获取列表,以下为核心代码:
List<User> users = userOperation.selectUsers("%");
for (User tempUser : users) {
System.out.println(tempUser.getUserAddress());
System.out.println(tempUser.getUserName());
}
二、增加数据
在IUserOperation接口中增加方法:
public void addUser(User user);
接口的方法还可以这样写,返回值代表影响的行数
public int addUser(User user);
在User.xml中配置增加的语句:
<!--执行增加操作的SQL语句。id和parameterType分别与IUserOperation接口中的addUser方法的名字和参数类型一致。以#{userName}的形式引用User参数的userName属性,MyBatis将使用反射读取User参数 的此属性。#{userName}中userName大小写敏感。引用其他的userAge等属性与此一致。useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入到User的id属性 -->
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})
</insert>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
System.out.println("Add:");
User addUser=new User();
addUser.setUserAddress("guangdong,guangzhou");
addUser.setUserName("eason");
addUser.setUserAge("80");
userOperation.addUser(addUser);
session.commit();//必须提交事务,否则不会写入到数据库。
if (addUser.getId()>0) {
System.out.println("增加数据成功,新增的id为:"+addUser.getId());
}
三、更新数据
在IUserOperation接口中增加方法:
public int updateUser(User user);
在User.xml中配置更新语句:
<update id="updateUser" parameterType="User">
update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
</update>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
User updateUser = userOperation.selectUserByID(1);
updateUser.setUserAddress("beijin,beijin");
int updateRetCount = userOperation.updateUser(updateUser);
session.commit();//必须提交事务,否则不会写入到数据库。
四、删除数据
在IUserOperation接口中增加方法:
public int deleteUser(int id);
在User.xml中配置删除语句:
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
int deleteRetCount = userOperation.deleteUser(6);
session.commit();//必须提交事务,否则不会写入到数据库。
测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test3
参考:
http://www.yihaomen.com/article/java/305.htm
MyBatis3-实现单表数据的增删查改的更多相关文章
- Mysql 单表操作、增删查改(基础4)
新建一个表,往里面插入数据. #新建一个表 mysql> create table test( -> id int, -> name varchar(20) -> );Quer ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- SSH框架的多表查询和增删查改 (方法一)上
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==> http://www.cnblogs.com/zhu520/p/7772823.html 因为最近在做Android 练习的 ...
- SSH框架的多表查询和增删查改 (方法一)中
原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html 这边文章是接的刚刚前一遍的基础上敲的 ...
- SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...
- mysql数据库,数据表,数据的增删查改语句
查询mysql支持的引擎 show engines; 查询mysql支持的字符集 show character set; 设置mysql默认存储引擎 set default_storage_engin ...
- mysql中数据表记录的增删查改(1)
数据记录的增删改查 insert into `数据表名称` (`字段名称`, ...) values ('1', ...); delete from `数据表名称` where 子句; update ...
- SQLServer数据操作(建库、建表以及数据的增删查改)
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, ...
- SQLServer数据操作(建库、建表以及数据的增删查改)[转]
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, filename ...
随机推荐
- pip安装itchat模块成功后annocanda中No module named 'itchat'
在cmd中pip install itchat 成功后在annocanda中却出现了下面的情况: 经过查找网上各种查询,原来pip默认是把东西安装在系统python环境中,即C:\Python27\L ...
- 【转】MySQL常见的运算符及使用
转自:http://www.linuxidc.com/Linux/2016-03/129672.htm MySQL中有4类运算符,它们是: 算术运算符 比较运算符 逻辑运算符 位操作运算符 算术操作符 ...
- NHibernate3.2学习笔记
一.开发环境 数据库:SQLServer2008 编译器:VS2010 .Net版本:.Net Framework 4.0 二.涉及第三方程序集 NHibernate.dll:版本3.2 Iesi.C ...
- cocos2d-x win7 部署
1. 安装 下载python https://www.python.org/downloads/release/python-279/ 2.从官网下载cocos2d-x http://www.co ...
- UVM基础之------uvm_port_base
Port Base Classes uvm_port_component_base This class defines an interface for obtaining a port ...
- 继续C#开发or转做产品
本人今年大四,C#开发,在一家公司实习了一年后,面临一个选择,是继续C#开发还是转做产品?我C#开发能力目前还一般,但很有兴趣.也喜欢设计与创意,做过产品专员.求大婶们指导!
- Git——基本操作
Shell 基本概念 shell俗称壳,为使用者提供使用界面,例如DOS下command以及后来的cmd.exe shell分类 图形界面shell,提供友好的可视化界面,例如windows操作界面, ...
- 自学php【一】 任务:图片上传即时可见
工作已经快2周了,头儿给派了个任务做个企业站!这几天正在紧锣密鼓的作战中!等忙完了这个活!写下自己的学习心得体会!与看到文章的您一起分享! 在这里记录每次遇到的难题,如何解决的! 今天要做的功能就是实 ...
- Codeforces_768_B_(二分)
B. Code For 1 time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- HDU_1506_Largest Rectangle in a Histogram_dp
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...