Mybatis入门02

目录

1.实际开发中Dao包的使用

2. 传递多个参数。

3. 特殊字符

4. mybatis的优化

4.3 解决列名和属性名不一致。

6.链表查询

7. 动态sql语句。


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
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值