MyBatis-第二章与个人作业

MyBatis-第二章
Dao接口引入
1. 修改mapper文件的 namespace, 对应接口类的全路径
2. 创建BookDao.java 接口类
3. 接口方法名对应mapper的SQL id
4. 定义反参和入参(如有)

Service引入
1. 创建service, serviceImpl 结构包,对应BookService, BookServiceImpl
2. 获取连接
3. 代理功能
在这里插入图片描述
通过SqlSession的代理功能,调用Dao层接口方法

插入示例
1. 书写mapper 的SQL
2. 书写dao层,注意方法名要和mapper里的id保持一致
3. 参数数量和类型保持一致,并使用注解@Param(“bookName”)对应mapper的参数名

如果只有一个入参,可以不写@Param注解,但不建议

4. 书写Service层代码

MyBatis工具类引入

全程公用一个SqlSessionFactory 
1. 复制MyBatisUtil工具类到util包
2. 修改service配置

插入并查询示例

生命周期2

  1. 首先加载mybatis-config.xml总配置文件,根据development的参数配置连接数据库;查询mappers映射关系,找到mapper.xml配置文件
  2. 执行mapper.xml文件,该文件记录了运行SQL
  3. 在dao接口层,dao的方法名对应mapper.xml的ID
    一个表 对应 一个实体 对应 一个mapper 对应 一个dao
  4. 在service层,通过工具类获取连接;通过代理模式(反射)获取dao接口对象
  5. 调用dao接口方法,执行SQL语句
  6. 关闭SqlSession

完成修改,删除示例

个人作业

1. Dao和Mapper的关系
Dao层是Mapper连接的入口方式
接口方法对应mapper的id
2. MyBatis如何实现动态传参
在mapper中书写sql语句,并在语句的条件下进注解@Param(“bookName”)
对应其参数名称
3. MyBatis的代理功能
通过sqlsession进行代理功能,调用Dao层进行方法的调用,进行入参
4. MyBatis的生命周期
SqlSessionFactoryBuilder (构造器): 它会根据配置或者代码来生成SqISessionFactory,采用的是分步构建的 Builder 模式。
SqlSessionFactory (工厂接口): 依靠它来生成 SqlSession,使用的是工厂模式。
SqlSession (会话): 一个既可以发送 SQL 执行返回结果,也可以获取 Mapper 的接口。在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是 MyBatis 提供的 SQLMapper接口编程技术,它能提高代码的可读性和可维护性。
SQL Mapper (映射器): MyBatis 新设计存在的组件,它由 一个 Java 接口和 XML 文件 (或注解) 构成,需要给出对应的 SQL 和映射规则。它负责发送 SQL 去执行,并返回结果 。
5. 插入,修改,删除示例
插入

<!-- 插入 -->
    	<insert id="insertBook">
    	insert into book (book_id,book_name,book_auth,book_brief) 
    	values(seq_bank_account.nextval,#{bookName},#{bookAuth},#{bookBrief})
    	</insert>
//插入
	public int insertBook(@Param("bookName")String bookName,
						@Param("bookAuth")String bookAuth,
						@Param("bookBrief")String bookBrief);
@Override
	public int insertBook(String bookName, String bookAuth, String bookBrief) throws IOException {
		SqlSession session = MyBatisUtil.getSqlSession();
		BookDao bookDao = session.getMapper(BookDao.class);
		int i = bookDao.insertBook(bookName, bookAuth, bookBrief);
		//事务并不是主动提交而是需要手动提交
		session.commit();
		MyBatisUtil.close();
		return i;
	}

修改

<!-- 修改 -->
    	<update id="updateBook">
    	update book set book_name=#{bookName} where book_id=#{bookId}
    	</update>
//修改
	public int updateBook(@Param("bookName")String bookName,
			@Param("bookId")int bookId);

	@Override
	public int delectBook(String bookName) throws IOException {
		SqlSession session = MyBatisUtil.getSqlSession();
		BookDao bookDao = session.getMapper(BookDao.class);
		int i = bookDao.delectBook(bookName);
		//事务并不是主动提交而是需要手动提交
		session.commit();
		MyBatisUtil.close();
		return i;
	}

删除

	<!-- 删除 -->
    	<delete id="delectBook">
    	delete from book where book_name=#{bookName}</delete>
//删除
   public int	delectBook(@Param("bookName")String bookName);
	@Override
	public int updateBook(String bookName, int bookId) throws IOException {
		// TODO Auto-generated method stub
		SqlSession session = MyBatisUtil.getSqlSession();
		BookDao bookDao = session.getMapper(BookDao.class);
		int i = bookDao.updateBook(bookName, bookId);
		//事务并不是主动提交而是需要手动提交
		session.commit();
		MyBatisUtil.close();
		return i;
	}

测试

public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BookService book = new	BookServiceImpl();
	//	List<Book> list = book.selectBookList();//查询操作
	//	int i = book.insertBook("浮生物语", "婆娑双树", "奇门异事");//插入操作
	//	int i = book.delectBook("斗破苍穹");
		int i = book.updateBook("wude", 22);
		System.out.println(i);
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值