一、使用Mybatis对表进行CRUD操作------基于XML的实现

1、定义SQL的映射文件

2、在conf.xml中进行注册。

2、创建测试类

【具体过程参考:Mybatis的学习总结一】

二、使用Mybatis对表进行CRUD操作----基于注解的实现

  1、定义SQL映射的注解接口

  ITaskMapper接口代码如下:

package com.cn.mybatis.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.cn.mybatis.model.EdiTestTask; public interface ITaskMapper { @Insert("INSERT into edi_test_task(task_id,task_name,task_type,task_owner) values(#{task_id},#{task_name},#{task_type},#{task_owner})")
public int addTask(EdiTestTask editt); @Update("UPDATE edi_test_task set task_name=#{task_name},task_type=#{task_type}, task_owner=#{task_owner} where task_id=#{task_id}")
public int updateTask(EdiTestTask editt); @Delete("delete from edi_test_task where task_id =#{taskId} ")
public int deleteTask(String taskId); @Select("select * from edi_test_task where task_id=#{taskId}")
public EdiTestTask getTaskById(String taskId); @Select("select * from edi_test_task")
public List<EdiTestTask> getAllTasks();
}

注意:我们不需要针对ITaskMapper接口去编写具体的实现类代码,这个具体的实现类由MyBatis帮我们动态构建出来,我们只需要直接拿来使用即可。

2、在配置文件conf.xml中注册以上接口:

  <mappers>
<mapper resource="com/cn/mybatis/mapper/taskMapper.xml"/>
<mapper class="com.cn.mybatis.mapper.ITaskMapper"/>
</mappers>

3、创建单元测试类:TestTaskCRUD.class

package com.cn.mybatis.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.cn.mybatis.common.MybatisUtil;
import com.cn.mybatis.mapper.ITaskMapper;
import com.cn.mybatis.model.EdiTestTask; public class TestTaskCRUD { @Test
public void testAdd(){
SqlSession ss=MybatisUtil.getSqlSession();
ITaskMapper mapper=ss.getMapper(ITaskMapper.class);
EdiTestTask editt=new EdiTestTask();
editt.setTask_id("");
editt.setTask_name("name");
editt.setTask_owner("owner");
editt.setTask_type("");
int add=mapper.addTask(editt);
ss.commit();
ss.close();
System.out.println("新增行数:"+add);
} @Test
public void testBupdate(){
SqlSession ss=MybatisUtil.getSqlSession(true);
ITaskMapper mapper=ss.getMapper(ITaskMapper.class);
EdiTestTask editt=new EdiTestTask();
editt.setTask_id("");
editt.setTask_name("wangrs2");
editt.setTask_owner("owner2");
editt.setTask_type("");
int update=mapper.updateTask(editt);
ss.close();
System.out.println("更新行数:"+update);
} @Test
public void testCselect() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
SqlSession ss=MybatisUtil.getSqlSession();
ITaskMapper mapper=ss.getMapper(ITaskMapper.class);
EdiTestTask editt=mapper.getTaskById("");
if(editt!=null){
Field[] fields=editt.getClass().getDeclaredFields();
for (int i = ; i < fields.length; i++) {
String name=fields[i].getName();
name=name.substring(,).toUpperCase()+name.substring();
String type=fields[i].getGenericType().toString();
Method m=editt.getClass().getMethod("get"+name);
if(type.equals("int")||type.equals("class java.lang.Integer")){
int val=(Integer)m.invoke(editt);
System.out.println("name:"+name+"————value:"+val);
}
if(type.equals("class java.lang.String")){
String value=(String)m.invoke(editt);
System.out.println("name:"+name+"————value:"+value);
}
}
}
} @Test
public void testDel(){
SqlSession ss=MybatisUtil.getSqlSession(true);
ITaskMapper mapper=ss.getMapper(ITaskMapper.class);
String taskId="";
int del=mapper.deleteTask(taskId);
ss.close();
System.out.println("已删除的行数:"+del);
}
}

公用的工具类:MybatisUtil 【获得SQLSession】 代码如下:

package com.cn.mybatis.common;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtil { public static SqlSessionFactory getSqlSessionFactory(){
String reources="conf.xml";
InputStream is=MybatisUtil.class.getClassLoader().getResourceAsStream(reources);
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
return ssf;
} public static SqlSession getSqlSession(){
SqlSession ss=MybatisUtil.getSqlSessionFactory().openSession();
return ss;
} /***
* 获取SQLSession
* @param isAutoCommint
* true:表示创建的SQLSession对象在执行完SQL之后会自动提交事务
* false:表示创建SQLSession对象在执行完SQL之后不会自动提交事务,这时需要我们手动调用sql.commit()来提交事务
* @return
*/
public static SqlSession getSqlSession(boolean isAutoCommint){
return getSqlSessionFactory().openSession(isAutoCommint);
} }

Mybatis的学习总结二:使用Mybatis对表进行CRUD操作【参考】的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  3. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  4. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  5. 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  6. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  7. mybatis学习(二)----对表进行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 userMapper.xml映射文件如下: <?xml version="1.0" encoding=&quo ...

  8. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  9. MyBatis学习总结_02_使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

随机推荐

  1. 【转】Android开发之旅:环境搭建及HelloWorld

    原文网址: http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我 ...

  2. HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)

    异或密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Des ...

  3. Android线程计时器实现

    cocos2dx的计时器很好用,但当app进入后台,其计时器会pause掉,如果想要一个稳恒计时器就得自己去实现完成了,在Cocos2d-x for ios中我们可以利用NSTimer类并结合objc ...

  4. HTML5与CSS3权威指南.pdf9

    第21章 Media Queries相关样式 该模块中允许添加媒体查询(media query)表达式,用以指定媒体类型,根据媒体类型来选择使用的样式(显示器.便携设备.电视机) 使用方法@media ...

  5. Hadoop 中 Eclipse 的配置

    先启动Hadoop守护进程,进入hadoop安装目录,执行bin/start-all.sh 主要是为了之后能正确测试 Ubuntu中下载安装Eclipse,执行sudo apt-get install ...

  6. 字符编码笔记:ASCII,Unicode和UTF-8,附带 Little endian和Big endian的解释

    作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...

  7. rtsp的东西

    http://ubuntuforums.org/showthread.php?t=1544946 http://www.live555.com/liveCaster/liveInput.html ht ...

  8. poj 2186 Popular Cows【tarjan求scc个数&&缩点】【求一个图中可以到达其余所有任意点的点的个数】

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27698   Accepted: 11148 De ...

  9. hdoj 2767 Proving Equivalences【求scc&&缩点】【求最少添加多少条边使这个图成为一个scc】

    Proving Equivalences Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  10. pom.xml第一行报错

    错误:Cannot detect Web Project version. Please specify version of Web Project through <version> ...