MyBatis第三课 Java注解的方式操作CRUD
Posted 笔触狂放
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis第三课 Java注解的方式操作CRUD相关的知识,希望对你有一定的参考价值。
概念
根据前面文章对MyBatis框架的学习【MyBatis】第三课 MyBatis映射文件的CRUD操作<方式二>初学者应该对该框架有一定的认识了,本文对该框架介绍第三种操作方式,使用Java注解的方式,可以加快并简化代码的操作,使开发者对于功能的完成效率更高。
操作步骤
创建web项目,将所需要的jar架包导入lib文件夹,并关联至项目,将主配置文件和数据库连接配置参数导入资源文件夹,如果对该操作还是不熟悉的初学者,请先阅读【MyBatis】第一课 MyBatis的框架的搭建和使用
那么我们前几篇文章中对于MyBatis框架操作数据库sql语句都需要映射文件,那么现在不需要了,我们只需要在dao层创建接口文件。
在接口中,使用@Select,@Insert,@Update,@Delete创建执行sql语句
例如,代码如下:
package com.book.dao;
import com.book.entity.Book;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
/**
* Created by admin on 2022/3/16.
*/
public interface IBookDao
//查询book表中所有图书的数量
@Select("select count(*) from book")
int getCount();
这时候,需要打开Mybatis-config.xml主配置文件,将之前的映射文件的路径改为接口文件的路径,不然运行会报映射文件找不到错误……
那么我们再使用JUnit单元测试,建立测试的包中创建测试类,代码如下:
package com.book.test;
import com.book.dao.IBookDao;
import com.book.entity.Book;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by admin on 2022/3/16.
*/
public class BookTest
public SqlSession ss=null;
public IBookDao dao=null;
public void init()
//将主配置文件转换成输入流
try
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
ss= new SqlSessionFactoryBuilder().build(is).openSession();
dao=ss.getMapper(IBookDao.class);
catch (IOException e)
e.printStackTrace();
@Test
public void one()
init();
int count = dao.getCount();
System.out.printf("获得的图书的总数量为:"+count+"本");
通过对one方法做单元测试,可即看到结果
那么如果执行的查询语句,需要传递条件数据,需要加上@Param注解
//查询书籍编号为2的书名
//当需要传入参数的时候,加上@Param注解,注解中的变量名需要与占位符的名称保持一致
@Select("select name from book where id=#id")
String getName(@Param("id") int id);
//查询书籍编号为1的书名,作者,价格,数量
@Select("select name,author,price,count from book where id=#id")
Map<String,Object> getBook(@Param("id")int id);
//查询作者为罗贯中,价格为98的书籍编号,书名和数量
@Select("select id,name,count from book where author=#author and price=#price")
Map<String,Object> getBookInfo(@Param("author")String author,@Param("price")double price);
执行代码如下:
@Test
public void two()
init();
String name = dao.getName(2);
System.out.println(name);
@Test
public void three()
init();
Map<String, Object> book = dao.getBook(1);
System.out.println(book);
@Test
public void four()
init();
Map<String, Object> map = dao.getBookInfo("罗贯中", 98);
System.out.println(map);
当传入的条件参数更多时,再使用这种方式可能就显得累赘了,建议还是使用Map集合或者自定义实体类进行封装大量的数据,比米娜增加开发者的工作量。
@Select("select id,name,count from book where author=#author and price=#price")
Map<String,Object> getBookInfo1(Map<String,Object> map);
//查询book表中的所有图书信息
@Select("select * from book")
List<Map<String,Object>> selectAll();
@Test
public void four1()
init();
Map<String,Object> map=new HashMap<>();
map.put("author","罗贯中");
map.put("price",98);
Map<String, Object> m = dao.getBookInfo1(map);
System.out.println(m);
@Test
public void five()
init();
List<Map<String, Object>> maps = dao.selectAll();
maps.forEach(map-> System.out.println(map));
那么对于执行添加,修改,删除操作的案例如下:
/添加数据
@Insert("insert into book values(#id,#name,#author,#price,#count)")
int addBook(Book book);
//修改数据
//修改书名为《童话故事》的价格为40,数量为1200
@Update("update book set price=#price,count=#count where name=#name")
int updateBook(Book book);
//删除数据
//清空数据库表的所有数据
@Delete("delete from book")
int delAll();
测试的代码如下:
@Test
public void six()
init();
Book book=new Book(0,"《童话故事》","安徒生",120,30);
int i = dao.addBook(book);
ss.commit();
if (i>0)
System.out.println("添加成功");
@Test
public void seven()
init();
Book book=new Book();
book.setName("《童话故事》");
book.setPrice(40);
book.setCount(1200);
int i = dao.updateBook(book);
ss.commit();
if (i>0)
System.out.println("修改成功");
@Test
public void eight()
init();
int i = dao.delAll();
ss.commit();
if (i>0)
System.out.println("数据已全部清空");
总结
通过对MyBatis框架的学习,很明显的发现比我们用JDBC原生的代码操作更简便,对于初学者来说,可能现在开始才是对Java产生不一样的兴趣,动力开始更强了吧!!!
以上是关于MyBatis第三课 Java注解的方式操作CRUD的主要内容,如果未能解决你的问题,请参考以下文章