一、加载基础配置文件(三种方式),并生成sessionFactory
1、
//加载基本配置文件(法一)
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
2、常用第二种,此文章也是用第二种
//加载基本配置文件(法二)
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
3、
//第三种方式:注解,sql语句放在接口里面,抽象方法的上面。如果使用这种方式,需要将存储sql语句的Mapper.xml文件删除。注解和.xml只能存在一个
// @Select("Select * from book")
List<Book> selectAll();
二、获取接口实例 这是接口的方法
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取接口实例
BookMapper mapper = sqlSession.getMapper(BookMapper.class);
三、增加操作
1、单个传入参数
如:传入某个对象,或者传入某个map
BookMapper.xml
<insert id="insertOne" parameterType="com.qq.model.Book" keyProperty="id">
insert into book(name,author,price) values (#{name},#{author},#{price})
</insert>
BookMapper接口
int insertOne(Book book);
测试类
Book book = new Book("天气预报", "小王", 10);
int num = mapper.insertOne(book);
System.out.println("添加结果是:"+num);
2、多个传入参数
-
解决多参数和传入参数无法对应的问题
-
1.仅sql语句赋值用#{arg}
<insert id="insertOne2" >
insert into book(name,author,price) values (#{arg0},#{arg1},#{arg2})
</insert>
-
2.仅接口抽象方法用@Param("name") 其中value = 可以省略 比较常用
int insertOne2(@Param(value = "name")String name,
@Param(value = "author")String author,
@Param(value = "price")double price);
-
3.传递map ,类似于传递一个对象整体
四、修改操作
BookMapper.xml 可以保持没有修改的值
<update id="modify" parameterType="com.qq.model.Book">
update book set name = #{name},
<if test="author != null and author != '' ">
author = #{author},
</if>
price = #{price} where id = #{id}
</update>