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) { ...
随机推荐
- MybatisPlus高级特性之ActiveRecord模式
1.是什么? ActiveRecord是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表:而模型类的一个实例对应表中的一行记录.ActiveRecord 一直广受解释型动态语言 ( PHP ...
- MySQL运维9-Mycat分库分表之枚举分片
一.枚举分片 通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务 二.枚举分片案例 枚举分片需求:现有 tb_en ...
- 10个必备的 async/await 工具函数
| 当谈到异步编程时,async/await是JavaScript中常用的功能之一.下面是10个常用的await和async函数示例,以及对它们的代码用途的解析: 1.异步获取数据 async fun ...
- 图纸安全管理:华企盾DSC数据防泄密系统的综合解决方案
企业设计人员创造出的图纸既是珍贵的知识产权,又承载着公司的创新力和竞争力.然而,随着信息技术的迅速发展,图纸泄密风险也在不断增加.为了保护这一重要的企业资产,华企盾DSC数据防泄密系统提供了一系列专业 ...
- JavaScript String对象及方法总结
String 对象创建方法: new String() var txt1 = new String("string"); var txt2 = "string" ...
- 轻量化动态编译库 Natasha v8.0 正式发布!
.NET8.0 与 动态编译 Hello 各位小伙伴,我于 2024年1月10日 发布了 Natasha 一个全新的里程碑版本 v8.0,对于老用户而言,此次发布版本号跨度较大,是因为我决定使用新的版 ...
- apex的安装过程及问题解决(ModuleNotFoundError:No module named 'packaging')
最近在复现代码时遇到了如下问题,在此记录一下问题的解决过程: 步骤一 git clone https://github.com/NVIDIA/apex.git 步骤二 cd apex 步骤三 pip ...
- C# 将Word转为PDF时,设置PDF文档保护
本文以C#代码示例展示如何将Word转为PDF时,设置PDF文档保护,可设置PDF文档打开密码保护以及权限密码保护.附VB.NET代码,有需要可供参考. 程序环境: 1.Word测试文档:.docx ...
- 云小课 | 华为云KYON:网段零修改上云,简单又好用
摘要:KYON(Keep Your Own Network)是华为云推出的企业级云网络解决方案,KYON能让用户直接将IDC组网搬到云上,网段零修改,简单又好用. 本文分享自华为云社区<[云小课 ...
- 基于RNN和CTC的语音识别模型,探索语境偏移解决之道
摘要:在本文介绍的工作中,我们展示了一个基于RNN和CTC的语音识别模型,在这个模型中,基于WFST的解码能够有效地融合词典和语言模型. 本文分享自华为云社区<语境偏移如何解决?专有领域端到端A ...