------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------


继续上次的开始,这次记录的是增删改查,上次重复过的代码不做过多解释

首先先创建mysql的表和实体类Book

BOOK

package cn.dawn.demo01.entity;

public class Book {
private Integer bookID;
private String bookName;
private String bookAuthor;
private Integer bookPrice; public Book() {
} public Integer getBookID() {
return this.bookID;
} public void setBookID(Integer bookID) {
this.bookID = bookID;
} public String getBookName() {
return this.bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getBookAuthor() {
return this.bookAuthor;
} public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
} public Integer getBookPrice() {
return this.bookPrice;
} public void setBookPrice(Integer bookPrice) {
this.bookPrice = bookPrice;
}
}

接下来是接口,我写到一块了,一次全部拿出来,我会标清除注释,给解释一下

package cn.dawn.demo01.dao;

import cn.dawn.demo01.entity.Book;

import java.util.List;

/**
* Created by Dawn on 2018/1/29.
*/
public interface IBookDAO {
//查全部
public List<Book> findAllBook();
//添加
public int insertBook(Book book);
//删除
public int deleteBook(int id);
//修改
public int updateBook(Book book);
//查都单独
public Book findOneBookByPK(int id);
}

增删改得到的返回值都是受影响的行数,查全部返回List泛型,查单独根据bookid进行查,返回的是单个对象Book

接下来是dao层同名的xml中

<?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.dawn.demo01.dao.IBookDAO">
<select id="findAllBook" resultType="Book">
select * from book
</select>
<insert id="insertBook">
INSERT INTO book(bookname,bookauthor,bookprice) VALUES (#{bookName},#{bookAuthor},#{bookPrice})
</insert>
<update id="updateBook">
UPDATE book SET bookname=#{bookName},bookauthor=#{bookAuthor},bookprice=#{bookPrice} WHERE bookid=#{bookID}
</update>
<delete id="deleteBook">
DELETE FROM book WHERE bookid=#{bookID}
</delete>
<select id="findOneBookByPK" resultType="Book">
SELECT * FROM book WHERE bookid=#{bookID}
</select>
</mapper>

下面我说一下这个xml中要注意的点,

mapper中的属性namespace的值就是刚才和这个同名的dao的全类名

其中的id要写成你刚才那个接口里的方法名,mybatis的这种方法这儿需要这么干,resultType="Book",这儿他是返回值类型,他这儿默认得写全类名,例如"cn.dawn.day01.entity.Book",

但是我这儿经过一个处理,它可以直接写成book,这个小知识点叫别名,稍微引一下,这儿放截图,截图好理解

 parameterType=""这儿这个属性,我上面省略掉了,他的意思是什么呢,就是传进去的参数类型,刚才不是有个带参方法是根据id拿到所对应的书吗,这就可以写id的类型,但是这儿可以省略,所以我就不写了

准备工作都做完成之后,我们开始用单测的方式来进行单测

我下面把单测的方法放上来,使用的是较为原始的方式,更直接的剖析

import cn.dawn.demo01.entity.Book;
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.Test; import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List; /**
* Created by Dawn on 2018/1/29.
*/
public class Test20180129 { /*Logger logger=Logger.getLogger("xxx");*/
///查单独
@Test
public void t5findOne(){
/*logger.info("这是查单独");*/
String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession(); Book book = session.selectOne("findOneBookByPK", );
System.out.println("书名"+book.getBookName()); session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
} ///删除
@Test
public void t4delete(){
String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession(); int count123 = session.delete("deleteBook",);
session.commit();
System.out.println(count123); session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
} ///修改
@Test
public void t3update(){
String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession(); Book book=new Book();
book.setBookID();
book.setBookName("心想事成888"); int count123 = session.update("updateBook", book);
session.commit();
System.out.println(count123); session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
} ///添加
@Test
public void t2Insert(){
String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession(); Book book=new Book();
book.setBookName("心想事成");
book.setBookAuthor("孟六");
book.setBookPrice(); int count123 = session.insert("insertBook", book);
session.commit();
System.out.println(count123); session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
} ///查全部
@Test
public void t1SelectAll(){
String path = "mybatis-config.xml"; try {
InputStream e = Resources.getResourceAsStream(path);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(e);
SqlSession session = factory.openSession();
List lists = session.selectList("findAllBook");
Iterator var7 = lists.iterator(); while(var7.hasNext()) {
Book book = (Book)var7.next();
System.out.println(book.getBookName() + "\t" + book.getBookAuthor());
} session.close();
} catch (IOException var9) {
var9.printStackTrace();
}
}
}

只有selectOne需要看一下,他是查单个的意思,别的都比较好理解,有的前一个博客有写,有的从字面意思就可以理解

增删改查就此结束

SSM-MyBatis-02:Mybatis最基础的增删改查(查全部和查单独一个)的更多相关文章

  1. SSM整合_年轻人的第一个增删改查_基础环境搭建

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  2. Mybatis实现简单的CRUD(增删改查)原理及实例分析

    Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...

  3. MyBatis学习(三)MyBatis基于动态代理方式的增删改查

    1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...

  4. SSM整合_年轻人的第一个增删改查_查找

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  5. SSM整合_年轻人的第一个增删改查_新增

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  6. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  7. ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查

    三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...

  8. 02.Mybatis的动态代理方式实现增删改查

    动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码,通过接口直接定位出sql语句,以下代码为通过 ...

  9. Oracle+mybatis实现对数据的简单增删改查

    第一步:--创建一个表空间:名字叫 mybatis,建在D盘下的date文件夹下: 第二步:创建用户,名字叫  lisi  ,密码为  :123456 第三步:给用户授权: 第四步:我们在    li ...

随机推荐

  1. OC中的枚举类型

    背景 一直对OC中的位移操作枚举不太理解,查找到两篇介绍OC中枚举的文章,觉得很不错. 什么是位移操作枚举呢? typedef NS_OPTIONS(NSUInteger, UIViewAutores ...

  2. 如何使用VS2013本地C++单元测试框架

    在VS2013中,可以使用VS自带的C++单元测试框架. 在使用该框架前,需要先安装Unit Test Generator(可以通过菜单“工具->扩展和更新”搜索安装). 下边,就阐述一下利用该 ...

  3. Unity C#用WWW操作数据库

    //在C#中进行GET查询 IEnumerator GETTest() { WWW w = new WWW("http://192.168.1.12/kaohe.php?&id=10 ...

  4. Google官方网络框架Volley实战——QQ吉凶测试,南无阿弥陀佛!

    Google官方网络框架Volley实战--QQ吉凶测试,南无阿弥陀佛! 这次我们用第三方的接口来做一个QQ吉凶的测试项目,代码依然是比较的简单 无图无真相 直接撸代码了,详细解释都已经写在注释里了 ...

  5. Asp.NetCore+Microsoft.AspNetCore.SignalR前后端分离

    1.新建WebApi 2.安装Microsoft.AspNetCore.SignalR 3.新建一个集线器和消息类 using Microsoft.AspNetCore.SignalR; using ...

  6. Idea(一) 安装与破解

    现在idea横行的时代,没用过idea都不好意思了,于是乎,我也下载感受下. 下载安装包和破解地址: 链接: https://pan.baidu.com/s/16OeiDw942JaPXKtc9Oz1 ...

  7. 入职第二天:使用koa搭建node server是种怎样的体验

    今天是我入职第二天,leader跟我说,昨天配置好了服务端渲染的文件,今天就先研究研究如何使用koa来搭建一个node server吧! 按照惯例,我去koa官网查了一下什么是koa,结果官网很简单的 ...

  8. 全局程序集缓存GAC

    GAC中的所有的Assembly都会存放在系统目录"%winroot%\assembly下面.放在系统目录下的好处之一是可以让系统管理员通过用户权限来控制Assembly的访问. 目录:C: ...

  9. RocketMQ源码 — 七、 RocketMQ高可用(2)

    上一篇说明了RocketMQ怎么支持broker集群的,这里接着说RocketMQ实现高可用的手段之一--冗余. RocketMQ部署的时候一个broker set会有一个mater和一个或者多个sl ...

  10. 我的AngularJS学习轨迹

    开始接触Anguljar可能是在2013年初,那个时候的版本1.0.*,那个时候国内主要的中文资料AngularJS学习笔记:http://zouyesheng.com/angular.html,an ...