这次接着上次写增删改查吧。

现将上节的方法改造一下,改造测试类。

package cn.my.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 org.junit.Before;
import org.junit.Test; import cn.my.mybatis.entity.User; public class TestUser {
private SqlSessionFactory factory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} @Test
public void testFindById(){
SqlSession session = factory.openSession();
User user = session.selectOne("cn.my.mybatis.entity.User.findById", 1);
session.close();
System.out.println(user);
}
}

简单的改造一下是为了后面写增删改查是每次都需要写setup方法中的代码。

下面我就不贴图了,我直接写代码了

1.新增

1.1首先添加新增的映射文件

<?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="cn.my.mybatis.entity.User">
<select id="findById" parameterType="int" resultType="cn.my.mybatis.entity.User">
select * from user where id=#{id}
</select>
<!-- 新增映射 -->
<insert id="insertUser" parameterType="cn.my.mybatis.entity.User">
INSERT INTO `user` (`username`,`birthday`,`sex`,`address`)
VALUES(#{username},#{birthday},#{sex},#{address})
</insert>
</mapper>

1.2 .添加新增测试方法

package cn.my.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date; 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 org.junit.Before;
import org.junit.Test; import cn.my.mybatis.entity.User; public class TestUser {
private SqlSessionFactory factory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} @Test
public void testFindById(){
SqlSession session = factory.openSession();
User user = session.selectOne("cn.my.mybatis.entity.User.findById", 1);
session.close();
System.out.println(user);
}
/**
* 新增用户
*/
@Test
public void testInserUser(){
SqlSession session = factory.openSession();
User user = new User();
user.setAddress("许昌");
user.setUsername("曹操");
user.setSex("男");
user.setBirthday(new Date());
session.insert("cn.my.mybatis.entity.User.insertUser", user);
session.commit();//这行记住一定不要忘,要不然提交不了
session.close();
System.out.println(user);
}
}

运行结果:

这样添加就写完了。如果需要添加完毕之后返回新增的id值。

user.xml代码

<!-- 新增映射 -->
<insert id="insertUser" parameterType="cn.my.mybatis.entity.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `user` (`username`,`birthday`,`sex`,`address`)
VALUES(#{username},#{birthday},#{sex},#{address})
</insert>

测试类代码

/**
* 新增用户
*/
@Test
public void testInserUser(){
SqlSession session = factory.openSession();
User user = new User();
user.setAddress("许昌");
user.setUsername("曹操1");
user.setSex("男");
user.setBirthday(new Date());
session.insert("cn.my.mybatis.entity.User.insertUser", user);
session.commit();
session.close();
System.out.println(user.getId());
}

看结果:

2.修改

1.1 user.xml添加代码

<!-- 修改用户 -->
<update id="updateUser" parameterType="cn.my.mybatis.entity.User">
UPDATE `user`
SET
`username` = #{username},
`birthday` = #{birthday},
`sex` = #{sex},
`address` = #{address}
WHERE `id` = #{id} ;
</update>

2.1测试类代码

/**
* 修改
*/
@Test
public void testUpdateUser(){
SqlSession session = factory.openSession();
User user = new User();
user.setId(29);
user.setAddress("许昌1");
user.setUsername("曹操2");
user.setSex("女");
user.setBirthday(new Date());
session.update("cn.my.mybatis.entity.User.updateUser", user);
session.commit();
session.close();
}

运行结果:

3.删除

user.xml

<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id=#{id}
</delete>

测试类代码

/**
* 删除
*/
@Test
public void testDeleteUser(){
SqlSession session = factory.openSession();
session.delete("cn.my.mybatis.entity.User.deleteUser", 29);
session.commit();
session.close();
}

运行结构:删除id为29的。

好了以上就是一个最简单的例子。有时间我会继续往下写的,如果需要加群一起研究的可以q我,939705214,也可以添加群号581591235,也可以加微信群

mybatis快速入门(二)的更多相关文章

  1. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  3. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  4. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  5. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  6. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  7. MyBatis学习笔记(一)——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  8. MyBatis学习总结(1)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  9. MyBatis学习总结(一)--mybatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

随机推荐

  1. iOS图片轮播

    基于ScrollView的图片播放 ScrollView的方法 NSTime的循环 UIPageControl的运用 委托方法 基于iphone5 未做屏幕的适配 import "ViewC ...

  2. img alt与title的区别

    前端 alt是图片加载不出来时候,对图片的文本替代 title 是鼠标放在图片上时,对图片的进一步说明 seo 搜索引擎对图片意思的理解主要靠 alt

  3. 在一台电脑上运行两个或两个以上的tomcat

    前言 在开发过程中,我们可能会同时用到多个tomcat,但以正常安装的形式安装多个tomcat,无论启动哪一个tomcat,打开的都是配置了环境变量的那一个tomcat,所以进行一些设置,以达到我们同 ...

  4. python爬虫循环导入MySql数据库

    1.开发环境 操作系统:win10    Python 版本:Python 3.5.2   MySQL:5.5.53 2.用到的模块 没有的话使用pip进行安装:pip install xxx     ...

  5. web端表格测试用例

    表格测试: 表格内容列表排序功能是否正常每一栏的宽度是否足够宽,表格里的文字是否都有折行?是否有因为某一格的内容太多,而将整行的内容拉长?表格是否能左(右)添加(删除)列,表格是否能上(下)添加(删除 ...

  6. es6之let和const命令的一些笔记

    let和const命令 let命令 基本用法 let命令用来声明变量,声明的变量只在命令所在的代码块内有效.for循环中很适合使用let命令. 有必要理解的例子: var a = []; for (v ...

  7. 初探Java多线程

    多线程是由Java提出的概念,那么什么是线程呢?这里会涉及到几个名字听着很类似的东西:程序.线程.进程. 程序:存储在磁盘上的一系列的文件,包括可执行文件和不可执行文件. 进程:在内存中,每一个程序都 ...

  8. scrapy回调函数传递参数

    scrapy.Request 的callback传参的两种方式 1.使用 lambda方式传递参数 def parse(self, response): for sel in response.xpa ...

  9. Java线程和守护进程

    ava的线程机制,有两类线程:User Thread(用户线程).Daemon Thread(守护线程) . 操作系统里面是没有守护线程的概念,只有守护进程,但是Java语言机制是构建在JVM的基础之 ...

  10. PaddlePaddle︱开发文档中学习情感分类(CNN、LSTM、双向LSTM)、语义角色标注

    PaddlePaddle出教程啦,教程一部分写的很详细,值得学习. 一期涉及新手入门.识别数字.图像分类.词向量.情感分析.语义角色标注.机器翻译.个性化推荐. 二期会有更多的图像内容. 随便,帮国产 ...