1.看一下我们接口

package cn.bdqn.mybatis.dao;

import org.apache.ibatis.annotations.Select;

import cn.bdqn.mybatis.been.Emp;
/**
* 这个接口不用写实现类,是用来给empMapper.xml进行动态绑定的
* @author Administrator
*
*/
public interface EmpMapper { public Emp getEmpById(Integer id);
public void addEmp(Emp emp);
/**
* MyBatis允许增删改直接定义一下类型返回值
* int long boolean 以及相应的包装类,
* 在接口中定义方法的时候,直接定义相应的返回值即可,无其他操作
* @param emp
* @return
*/
public boolean updateEmp(Emp emp);
public void deleteEmpById(Integer id);
}

  

2.编写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">
<!--namespace:名称空间 -->
<mapper namespace="cn.bdqn.mybatis.dao.EmpMapper">
<!-- id,唯一标识 resultType:返回值类型,bean的全限定名称 #{id},从传递过来的参数中取出id值,相当于换位符 public
Emp getEmpById(Integer id); -->
<select id="getEmpById" resultType="cn.bdqn.mybatis.been.Emp"
databaseId="mysql">
select * from emp where id = #{id}
</select>
<select id="getEmpById" resultType="cn.bdqn.mybatis.been.Emp"
databaseId="oracle">
select * from emp where id = #{id}
</select>
<!-- public void addEmp(Emp emp); insert标签: id:对应我们javaBean的方法名 parameterType
可以省略,如果要写就是javaBean的全限定名称 insert into emp(last_name,gender,email) values(#{last_name},#{gender},#{email})
结尾不需要分号,values值的#{对应的javaBean的属性名} -->
<insert id="addEmp" parameterType="cn.bdqn.mybatis.been.Emp">
insert into emp(last_name,email,gender)
values(#{last_name},#{email},#{gender})
</insert>
<!-- update标签: public void updateEmp(Emp emp); id:对应我们javaBean的方法名 parameterType
可以省略,如果要写就是javaBean的全限定名称 update emp set last_name=#{last_name},email=#{email},gender=#{gender}
while id=#{id} 结尾不需要分号,#{}相当于占位符,等于我们传过来的值 -->
<update id="updateEmp">
update emp set last_name=#{last_name},email=#{email},gender=#{gender} where
id=#{id}
</update>
<!-- delet标签: public void deleteEmpById(Integer id); -->
<delete id="deleteEmpById">
delete from emp where id=#{id}
</delete> </mapper>

  3.编写测试类

package cn.bdqn.mybatis.test;

import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.bdqn.mybatis.been.Emp;
import cn.bdqn.mybatis.dao.EmpMapper; public class MyBatisTest_02 {
public static void main(String[] args) throws IOException {
//获取SqlSessionFactory实例
String resource="mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
//获取到的sqlsession不会自动提交
SqlSession openSession = build.openSession();
try{
//测试添加
EmpMapper mapper = openSession.getMapper(EmpMapper.class);
/* Emp emp = new Emp(null,"liyuanfeng","liyuanfeng@qq.com","1");
mapper.addEmp(emp);*/
//测试修改
Emp emp = new Emp(1,"liyuanfeng","liyuanfeng@qq.com","1");
mapper.updateEmp(emp); //进行手动提交
openSession.commit();
}finally{
openSession.close();
} } }

  

MyBatis编写映射文件实现增删改操作 附说明及代码的更多相关文章

  1. MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存

    二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...

  2. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  3. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

  4. MyBatis学习 之 三、SQL语句映射文件(2)增删改查、参数、缓存

    2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id="getStudent" paramet ...

  5. mybatis3.1-[topic-16-17]-映射文件_增删改查_insert_获取自增主键的值

    笔记要点出错分析与总结 /**测试第16章的增,删,改 的内容 * 错误1: <insert id="addEmp" parameterType="com.bean ...

  6. 二、SQL语句映射文件(2)增删改查、参数、缓存

    //备注:该博客引自:http://limingnihao.iteye.com/blog/106076 2.2 select 一个select 元素非常简单.例如: Xml代码 收藏代码 <!- ...

  7. SQL语句映射文件(2)增删改查、参数、缓存

    2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id="getStudent" paramet ...

  8. mybatis入门--单表的增删改操作

    单表的增加操作 前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作.首先是在user.xml文件中添加insert的方法.代码如下 <!-- ...

  9. 映射文件中增删改查标签中的parameterType和resultType

    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中. resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射 ...

随机推荐

  1. 简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)

    博弈论入门: 巴什博弈: 两个顶尖聪明的人在玩游戏,有一堆$n$个石子,每次每个人能取$[1,m]$个石子,不能拿的人输,请问先手与后手谁必败? 我们分类讨论一下这个问题: 当$n\le m$时,这时 ...

  2. poj2965 【枚举】

    The game “The Pilots Brothers: following the stripy elephant” has a quest where a player needs to op ...

  3. MT【10】和三次有关的一个因式分解

    解答: 评:1此处因式分解也可以看成关于$a$的函数$f(a)$利用多项式有理根的有关知识得到 2.此处我们可以得到关于$\Delta ABC$的余弦的一个不等式$cosA+cosB+cosC> ...

  4. 洛谷 P1378 油滴扩展 改错

    P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ...

  5. Python中threading的join和setDaemon的区别及用法

    Python多线程编程时经常会用到join()和setDaemon()方法,基本用法如下: join([time]): 等待至线程中止.这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或 ...

  6. LoadRunner断言:正确结果有多种情况

    用过lr的都知道,我们可以用web_reg_find这个注册函数判断某个请求的返回中是否有我们要找的内容. 但是,如果正常的情况有多种,该如何断言呢? 设置多个检查点 把每个检查点获取到的结果数量相加 ...

  7. CF1114B Yet Another Array Partitioning Task(贪心,构造题)

    我至今不敢相信我被这么一道简单的题卡了这么久……看来还是太弱了…… 题目链接:CF原网 题目大意:定义一个序列的“美丽度”为这个序列前 $m$ 大的数的和.现在有一个长度为 $n$ 的序列,你需要把它 ...

  8. 暑期OI大电影——不看后悔整个OI生涯!

    惊爆~!! 2018暑期OI大电影要开始放送啦~!! 各位OI骨灰级大咖登场荧幕~!! 近四十部大电影纷至沓来~!! 著名特级导演CCF.著名特级编剧刘汝佳等纷纷给予高度评价~!! 观众朋友们,OI的 ...

  9. 洛谷P5163 WD与地图

    只有洛谷的毒瘤才会在毒瘤月赛里出毒瘤题...... 题意:三个操作,删边,改变点权,求点x所在强连通分量内前k大点权之和. 解:狗屎毒瘤数据结构乱堆...... 整体二分套(tarjan+并查集) + ...

  10. 【洛谷P1379】八数码难题 状压bfs

    对于这道题来说,每个时刻的状态是整个棋盘所有棋子的位置,即:任何一个棋子位置发生了移动,都会使得状态转移. 因此,需要采取将整个状态作为广搜的搜索对象,进行状态压缩.采用哈希得到每个状态的对应的数值, ...