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>

posted @ 2023-11-12 11:58  jack-chen666  阅读(36)  评论(0编辑  收藏  举报