目录
1.实际开发中Dao包的使用
//为了查找你的sql 需要指定该sql的唯一标识。namespace+id
//所有的方法名都叫做:selectList selectOne() 我们习惯自己命名方法。getById()
也可以自己定义方法
(1)定义一个相关的接口
import java.util.List;
/**
* @program: xxx
* @description:
* @author: 老魏
* @create: 2021-12-05 21:13
**/
public interface BookDao {
public int InsertBook(Book book);
public int updateBook(Book book);
public int deleteBook(int id);
public Book selectById(int id);
public List<Book> selectAll();
}
(2)映射文件(
<?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">
<!--namespace:命名空间:它的值现在可以随便写。
以后必须和dao接口对应。
-->
<mapper namespace="a"> //这个现在可以随便起名,到后边就要按照路径写了
<!--这里的id必须和Dao中的方法名一致。-->
<!--增-->
<insert id="InsertBook">
insert into book_info(book_name,book_author,book_price,book_pub) values (#
{name},#{author},#{price},#{pub})
</insert>
<!--删-->
<delete id="deleteBook">
delete from book_info where book_id=#{id}
</delete>
<!--改-->
<update id="updateBook">
update book_info set book_name=#{name} ,book_author=#{author},book_price=#{price},book_pub=#{pub} where book_id=#{id};
</update>
<!--全查-->
<select id="selectAll" resultType="com.sixth.entity.Book"">
select * from book_info
</select>
<!--根据id查-->
<select id="selectById" resultType="com.sixth.entity.Book"">
select * from book_info where id=#{id}
</select>
</mapper>
注意: namespace必须和接口所在的路径对应。id必须和方法名一致
(3)测试
import com.aaa.sixth.whd.dao.BookDao;
import com.aaa.sixth.whd.entity.Book;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import java.io.Reader;
import java.util.List;
/**
* @program: xxx
* @description:
* @author: 老魏
* @create: 2021-12-05 21:15
**/
public class TestBookDao {
private SqlSession session;
@Before
public void before()throws Exception{
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
session=build.openSession();
}
@Test
public void testInsert(){
//得到dao的实现类。由mybatis框架按照映射文件帮你生成
BookDao bookDao = session.getMapper(BookDao.class);
Book book = new Book();
book.setName("老人的故事");
book.setAuthor("老人");
book.setPrice(50);
book.setPub("xx出版社");
bookDao.InsertBook(book);//调用就是dao中自己的方法。
session.commit();
}
@Test
public void testUpdate(){
BookDao bookDao = session.getMapper(BookDao.class);
Book book = new Book();
book.setName("西游");
book.setAuthor("老刘");
book.setPrice(50);
book.setPub("xxx");
book.setId(1006);
bookDao.updateBook(book);
session.commit();
}
@Test
public void testDelete(){
BookDao bookDao = session.getMapper(BookDao.class);
bookDao.deleteBook(1005);
session.commit();
}
@Test
public void selectById(){
BookDao bookDao = session.getMapper(BookDao.class);
Book book =bookDao.selectById(1007);
System.out.println(book);
}
@Test
public void selectAll(){
BookDao bookDao = session.getMapper(BookDao.class);
List<Book> list=bookDao.selectAll();
System.out.println(list);
}
}
2. 传递多个参数。
<!--如果方法传递的是多个参数时默认mybatis会给这些参数起名:param1 param2.....
<select id="selectByCondition" resultType="com.aaa.sixth.whd.entity.Book">
select * from book_info where name=#{param1} and price=#{param2}
</select>
如果使用自定义参数名 @Param("参数名")
public List<Book> select01(@Param("min") int min,@Param("max") int max);
-->
<select id="se