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. 技术Leader:像李云龙一样打造学习型团队

    今天跟大家分享一下怎么样构建一个学习型的团队. 首先对于计算机行业而言,不明而喻,我们要接受的东西真的太多了.我们接触的信息和变化也太多了.如果只是因循守旧,排斥新东西,那么我们被时代淘汰只是个时间问 ...

  2. zookeeper JavaApi 删除节点

    /* * 删除节点 * 1.删除单个节点 * 2.删除带有子节点的节点 * 3.必须成功的删除 * 4.回调 * * */ @Test public void delete1() throws Exc ...

  3. 1 HTTP是什么,HTTP不是什么?

    HTTP是什么? HTTP 全程超文本传输协议(HyperText Transfer Protocol). 包含三部分:超文本.传输.协议. 1. 协议 HTTP是一个用在计算机世界里的协议.它使用计 ...

  4. Mybatis出现Caused by: net.sf.jsqlparser.parser.ParseException: ....异常

    今天在开发项目中遇到了一个奇怪的异常,记录一下把! 异常信息如下(截取了主要的部分) Caused by: net.sf.jsqlparser.parser.ParseException: Encou ...

  5. python操作redis集群、redis主从+哨兵

    主从+哨兵 from redis.sentinel import Sentinel if __name__ == '__main__': # 哨兵监听的别名,这个就是你redis配置中的名字 serv ...

  6. IDEA插件(2 高效开发)

    一.高效开发代码插件 ① .TONGYI Lingma(阿里通灵代码AI插件) 提问回答 右键其他功能,只需要登录阿里账号就可以使用 ②.Talk X(AI提示插件,和阿里通灵代码很像的功能) ③.A ...

  7. Java 全栈知识体系(2021 PDF 版本)

    40000 +字长文总结,民工哥已将此文整理成PDF文档了,需要的见文后下载获取方式. 全栈知识体系总览 Java入门与进阶 面向对象与Java基础 Java 基础 - 面向对象 Java 基础 - ...

  8. kubernetes之部署springboot项目jar项目(三)

    kubernetes之部署war项目(三) k8s系列 源自我工作上的实际场景,记录于此. k8s部署springboot项目 假设我的jar项目是:myjar.jar 用到的环境 centos 7. ...

  9. libGDX游戏开发之Sprite、Texture和TextureRegion绘制旋转、反转(九)

    libGDX游戏开发之Sprite.Texture和TextureRegion绘制反转(九) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm- ...

  10. 23、Flutter AppBar TabBar TabBarView

    AppBar自定义顶部按钮图标.颜色 class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); @overri ...