java项目实战-mybatis-基本用法02接口绑定实现类-day23
1. 复习 什么是接口 什么是类?
public interface Speak {
void say();
}
Speak这个接口里面定义了say方法 所有实现了Speak的类 都必须实现say方法
public class Chinese implements Speak {
@Override
public void say() {
System.out.println("优美的中国人中国人 讲优美的中国话 !");
}
}
public class English implements Speak {
@Override
public void say() {
System.out.println("见面 say hello !");
}
}
public class Test {
public static void main(String[] args) {
Chinese chinese = new Chinese();
chinese.say();
English english = new English();
english.say();
}
}
优美的中国人中国人 讲优美的中国话 !
见面 say hello !
接口的实现 与 类的继承 有什么区别
接口的实现:has-a 具备xxx能力 或者特征
继承:is-a 就是xxxx类
2. mybatis接口绑定实现类 来实现查询
新建工程

定义BookMapper接口 定义方法selectAllBoos()
public interface BookMapper {
List selectAllBooks();
}
同样的 resource里面com.msb.mapper.BookMapper.xml里面 定义实现selectAllBooks方法
<?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="com.msb.mapper.BookMapper">
<select id="selectAllBooks" resultType="Book">
select * from t_book
</select>
</mapper>
Test类做相应的修改
public class TestBook2 {
public static void main(String[] args) throws IOException {
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
BookMapper mapper = sqlSession.getMapper(BookMapper.class); // 获取接口类
List list = mapper.selectAllBooks(); // 调用实现方法
for (int i = 0; i < list.size(); i++) {
Object o = list.get(i);
System.out.println(o);
}
sqlSession.close();
inputStream.close();
}
}
4. 参数的传递
public static void getOneBook() throws IOException {
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
BookMapper mapper = sqlSession.getMapper(BookMapper.class); // 获取接口类
int id = 1;
String name = "三国演义";
String author = "罗贯中";
Book b = mapper.selectOneBook(id, name, author); // 调用实现方法
if (b!=null){
System.out.println("查询成功");
System.out.println(b);
}
sqlSession.close();
inputStream.close();
}
}
public interface BookMapper {
List selectAllBooks(); //查询所有书籍
Book selectOneBook(int id, String name, String author); // 查询一本书籍
}
<mapper namespace="com.msb.mapper.BookMapper">
<select id="selectAllBooks" resultType="Book">
select * from t_book
</select>
<select id="selectOneBook" resultType="Book">
select * from t_book where id=#{arg0} and name=#{arg1} and author=#{arg2}
</select>
</mapper>
也可以直接传入Book对象
修改点
<select id="selectOneBook" resultType="Book">
select * from t_book where id=#{id} and name=#{name} and author=#{author}
</select>
public interface BookMapper {
List selectAllBooks(); //查询所有书籍
Book selectOneBook(Book b); // 查询一本书籍
}
int id = 1;
String name = "三国演义";
String author = "罗贯中";
Book book = new Book();
book.setId(id);
book.setName(name);
book.setAuthor(author);
Book b = mapper.selectOneBook(book);
if (b!=null){
System.out.println("查询成功");
System.out.println(b);
}
5 插入数据
Book book = new Book();
book.setId(4);
book.setName("西游记");
book.setAuthor("施耐庵");
book.setPrice(59.9);
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
BookMapper mapper = sqlSession.getMapper(BookMapper.class); // 获取接口类
mapper.insertBook(book);
sqlSession.commit(); // 记住一定不能少
sqlSession.close();
inputStream.close();
public interface BookMapper {
List selectAllBooks(); //查询所有书籍
Book selectOneBook(Book b); // 查询一本书籍
void insertBook(Book b);
}
<select id="insertBook" >
insert into t_book(id, name, author, price) values(#{id}, #{name}, #{author}, #{price})
</select>
java项目实战-mybatis-基本用法02接口绑定实现类-day23的更多相关文章
- selenium+java项目实战---百度输入框
最近对java+selenium+testng+maven 做一个小项目的总结,并对工作中的框架在做一些小总结,大概目录为: 1.项目实战--百度登录输入框 2.项目的二次封装 3.框架分层,及po模 ...
- 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理
这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...
- Android项目实战手机安全卫士(02)
目录 项目结构图 源代码 运行结果 项目源代码 项目结构图 源代码 清单 01. SplashActivity.java package com.coderdream.mobilesafe.acti ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...
- 【java项目实战】ThreadLocal封装Connection,实现同一线程共享资源
线程安全一直是程序员们关注的焦点.多线程也一直是比較让人头疼的话题,想必大家以前也遇到过各种各种的问题.我就不再累述了.当然,解决方案也有非常多,这篇博文给大家提供一种非常好的解决线程安全问题的思路. ...
- koa 项目实战(七)登录接口
1.登录接口 /** * @route POST api/users/login * @desc 登录接口地址 * @access 接口是公开的 */ router.post('/login', as ...
- koa 项目实战(四)注册接口和调试工具(postman)
1.安装模块 npm install koa-bodyparser --save npm install bcryptjs --save 2.引入模块 根目录/app.js const bodyPar ...
- 【Java项目实战】——DRP之HTML总结
在DRP的学习之中,又将之前BS的内容又一次复习了一遍,借着复习的机会将BS的各个部分再又一次总结一下.今天来总结一下HTML. 在学习BS之后就进入了权限系统的开发之中,可是仍然发现非常多代码不会不 ...
- koa 项目实战(六)注册接口加密
1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { ...
随机推荐
- 技术Leader:像李云龙一样打造学习型团队
今天跟大家分享一下怎么样构建一个学习型的团队. 首先对于计算机行业而言,不明而喻,我们要接受的东西真的太多了.我们接触的信息和变化也太多了.如果只是因循守旧,排斥新东西,那么我们被时代淘汰只是个时间问 ...
- zookeeper JavaApi 删除节点
/* * 删除节点 * 1.删除单个节点 * 2.删除带有子节点的节点 * 3.必须成功的删除 * 4.回调 * * */ @Test public void delete1() throws Exc ...
- 1 HTTP是什么,HTTP不是什么?
HTTP是什么? HTTP 全程超文本传输协议(HyperText Transfer Protocol). 包含三部分:超文本.传输.协议. 1. 协议 HTTP是一个用在计算机世界里的协议.它使用计 ...
- Mybatis出现Caused by: net.sf.jsqlparser.parser.ParseException: ....异常
今天在开发项目中遇到了一个奇怪的异常,记录一下把! 异常信息如下(截取了主要的部分) Caused by: net.sf.jsqlparser.parser.ParseException: Encou ...
- python操作redis集群、redis主从+哨兵
主从+哨兵 from redis.sentinel import Sentinel if __name__ == '__main__': # 哨兵监听的别名,这个就是你redis配置中的名字 serv ...
- IDEA插件(2 高效开发)
一.高效开发代码插件 ① .TONGYI Lingma(阿里通灵代码AI插件) 提问回答 右键其他功能,只需要登录阿里账号就可以使用 ②.Talk X(AI提示插件,和阿里通灵代码很像的功能) ③.A ...
- Java 全栈知识体系(2021 PDF 版本)
40000 +字长文总结,民工哥已将此文整理成PDF文档了,需要的见文后下载获取方式. 全栈知识体系总览 Java入门与进阶 面向对象与Java基础 Java 基础 - 面向对象 Java 基础 - ...
- kubernetes之部署springboot项目jar项目(三)
kubernetes之部署war项目(三) k8s系列 源自我工作上的实际场景,记录于此. k8s部署springboot项目 假设我的jar项目是:myjar.jar 用到的环境 centos 7. ...
- libGDX游戏开发之Sprite、Texture和TextureRegion绘制旋转、反转(九)
libGDX游戏开发之Sprite.Texture和TextureRegion绘制反转(九) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm- ...
- 23、Flutter AppBar TabBar TabBarView
AppBar自定义顶部按钮图标.颜色 class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); @overri ...