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>