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的更多相关文章

  1. selenium+java项目实战---百度输入框

    最近对java+selenium+testng+maven 做一个小项目的总结,并对工作中的框架在做一些小总结,大概目录为: 1.项目实战--百度登录输入框 2.项目的二次封装 3.框架分层,及po模 ...

  2. 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

    这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...

  3. Android项目实战手机安全卫士(02)

    目录 项目结构图 源代码 运行结果 项目源代码 项目结构图 源代码 清单 01.  SplashActivity.java package com.coderdream.mobilesafe.acti ...

  4. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  5. 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)

    首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...

  6. 【java项目实战】ThreadLocal封装Connection,实现同一线程共享资源

    线程安全一直是程序员们关注的焦点.多线程也一直是比較让人头疼的话题,想必大家以前也遇到过各种各种的问题.我就不再累述了.当然,解决方案也有非常多,这篇博文给大家提供一种非常好的解决线程安全问题的思路. ...

  7. koa 项目实战(七)登录接口

    1.登录接口 /** * @route POST api/users/login * @desc 登录接口地址 * @access 接口是公开的 */ router.post('/login', as ...

  8. koa 项目实战(四)注册接口和调试工具(postman)

    1.安装模块 npm install koa-bodyparser --save npm install bcryptjs --save 2.引入模块 根目录/app.js const bodyPar ...

  9. 【Java项目实战】——DRP之HTML总结

    在DRP的学习之中,又将之前BS的内容又一次复习了一遍,借着复习的机会将BS的各个部分再又一次总结一下.今天来总结一下HTML. 在学习BS之后就进入了权限系统的开发之中,可是仍然发现非常多代码不会不 ...

  10. koa 项目实战(六)注册接口加密

    1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { ...

随机推荐

  1. MybatisPlus高级特性之ActiveRecord模式

    1.是什么? ActiveRecord是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表:而模型类的一个实例对应表中的一行记录.ActiveRecord 一直广受解释型动态语言 ( PHP ...

  2. MySQL运维9-Mycat分库分表之枚举分片

    一.枚举分片 通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务 二.枚举分片案例 枚举分片需求:现有 tb_en ...

  3. 10个必备的 async/await 工具函数

    | 当谈到异步编程时,async/await是JavaScript中常用的功能之一.下面是10个常用的await和async函数示例,以及对它们的代码用途的解析: 1.异步获取数据 async fun ...

  4. 图纸安全管理:华企盾DSC数据防泄密系统的综合解决方案

    企业设计人员创造出的图纸既是珍贵的知识产权,又承载着公司的创新力和竞争力.然而,随着信息技术的迅速发展,图纸泄密风险也在不断增加.为了保护这一重要的企业资产,华企盾DSC数据防泄密系统提供了一系列专业 ...

  5. JavaScript String对象及方法总结

    String 对象创建方法: new String() var txt1 = new String("string"); var txt2 = "string" ...

  6. 轻量化动态编译库 Natasha v8.0 正式发布!

    .NET8.0 与 动态编译 Hello 各位小伙伴,我于 2024年1月10日 发布了 Natasha 一个全新的里程碑版本 v8.0,对于老用户而言,此次发布版本号跨度较大,是因为我决定使用新的版 ...

  7. apex的安装过程及问题解决(ModuleNotFoundError:No module named 'packaging')

    最近在复现代码时遇到了如下问题,在此记录一下问题的解决过程: 步骤一 git clone https://github.com/NVIDIA/apex.git 步骤二 cd apex 步骤三 pip ...

  8. C# 将Word转为PDF时,设置PDF文档保护

    本文以C#代码示例展示如何将Word转为PDF时,设置PDF文档保护,可设置PDF文档打开密码保护以及权限密码保护.附VB.NET代码,有需要可供参考. 程序环境: 1.Word测试文档:.docx ...

  9. 云小课 | 华为云KYON:网段零修改上云,简单又好用

    摘要:KYON(Keep Your Own Network)是华为云推出的企业级云网络解决方案,KYON能让用户直接将IDC组网搬到云上,网段零修改,简单又好用. 本文分享自华为云社区<[云小课 ...

  10. 基于RNN和CTC的语音识别模型,探索语境偏移解决之道

    摘要:在本文介绍的工作中,我们展示了一个基于RNN和CTC的语音识别模型,在这个模型中,基于WFST的解码能够有效地融合词典和语言模型. 本文分享自华为云社区<语境偏移如何解决?专有领域端到端A ...