在第一期我们简单的了解了一下框架的使用方法:
创建实体类成员属性对应数据库表的列名→编写主配置文件→根据实际业务编写接口以及接口的实现类→编写接口的映射文件→测试代码
在本期,依照上述方式分别实现增删改查,篇幅较长,搬好小板凳,安心食用
根据ID查找一本书籍的信息,以第一期的项目结构作为基础即可,在IBookDao接口中创建新方法用于查询:
public Book findBookById(int id);//查找一本书
到IBookDaoImpl实现类里添加未实现的抽象方法
@Override public Book findBookById(int id) { SqlSession session = null; Book book = new Book(); try { //1.读取主配置文件mybatis-config.xml String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); //2.根据主配置文件mybatis-config.xml构建SqlSessionFactory对象factory SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); //3.根据SqlSessionFactory对象创建SqlSession对象session session = factory.openSession(); //4.调用SqlSession对象session的selectList方法执行查询数据库的 *** 作,返回映射后的结果集合 book = session.selectOne("com.jiheng.dao.IBookDao.findBookById",id); } catch (Exception e1) { e1.printStackTrace(); }finally { session.close(); } return book; }
编写映射文件BookMapper.xml新增一个查询语句:
测试代码,在测试类TestBook01中新建一个方法测试代码:
public static void findBookById(int id){ IBookDao bookDao = new IBookDaoImpl(); Book book = bookDao.findBookById(id); book.show(); }
到主方法里去调用这个静态方法就OK!方法后面给一个我们想查找的书籍id:
public static void main(String[] args) { findBookById(3); }
结果如下:
在IBookDao接口中创建新的方法用于添加一本书籍信息:
public int insertBook(Book book);//增加一本书
IBookDaoImpl实现类添加未实现的抽象方法:
@Override public int insertBook(Book book) { SqlSession session = null; int count = 0; try { //1.读取主配置文件mybatis-config.xml String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); //2.根据主配置文件mybatis-config.xml构建SqlSessionFactory对象factory SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); //3.根据SqlSessionFactory对象创建SqlSession对象session session = factory.openSession(); //4.调用SqlSession对象session的selectList方法执行查询数据库的 *** 作,返回映射后的结果集合 count = session.insert("com.jiheng.dao.IBookDao.insertBook",book); session.commit(); } catch (Exception e1) { e1.printStackTrace(); }finally { session.close(); } return count; }
BookMapper.xml映射文件新增一条sql语句:
INSERT INTO books VALUES(#{id},#{bookname},#{author},#{category})
最后测试代码即可,编写测试类新增方法:
public static void insertBook(){ Book book = new Book(); book.setId(5); book.setBookname("Mysql从删库到跑路"); book.setAuthor("张三"); book.setCategory("计算机技术"); IBookDao bookDao = new IBookDaoImpl(); int count = bookDao.insertBook(book); if(count>0){ System.out.println("成功添加一本书!"); } }
调用这个静态方法,运行结果如下:
查看数据库,可以看到成功的添加了一本书籍信息:
根据书籍id删除对应的书籍信息
在IBookDao接口中创建删除方法:
public int deleteBookById(int id);//删除一本书
在IBookDaoImpl中实现这个方法:
@Override public int deleteBookById(int id) { SqlSession session = null; int count = 0; try { //1.读取主配置文件mybatis-config.xml String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); //2.根据主配置文件mybatis-config.xml构建SqlSessionFactory对象factory SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); //3.根据SqlSessionFactory对象创建SqlSession对象session session = factory.openSession(); //4.调用SqlSession对象session的selectList方法执行查询数据库的 *** 作,返回映射后的结果集合 count = session.insert("com.jiheng.dao.IBookDao.deleteBookById",id); session.commit(); } catch (Exception e1) { e1.printStackTrace(); }finally { session.close(); } return count; }
编写映射文件BookMapper.xml,添加删除的语句:
DELETE FROM books WHERe id=#{id}
在TestBook01中新增方法用来测试代码:
public static void deleteBookById(int id){ IBookDao bookDao = new IBookDaoImpl(); int count = bookDao.deleteBookById(id); if(count>0){ System.out.println("删除成功!"); } }
到主方法也就是main方法里直接调用这个方法:
public static void main(String[] args) { deleteBookById(5); }
方法的参数给上想要删除的书籍id,这里我们给上5,把刚才添加的书删除,运行结果如下:
控制台显示已经删除成功,再到数据库里看,发现第五本书已经删除:
把一本书的信息重新修改成我们想要的
在IBookDao接口中添加修改方法:
public int updateBook(Book book);//修改一本书
IBookImpl类中添加实现方法:
@Override public int updateBook(Book book) { SqlSession session = null; int count = 0; try { //1.读取主配置文件mybatis-config.xml String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); //2.根据主配置文件mybatis-config.xml构建SqlSessionFactory对象factory SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); //3.根据SqlSessionFactory对象创建SqlSession对象session session = factory.openSession(); //4.调用SqlSession对象session的selectList方法执行查询数据库的 *** 作,返回映射后的结果集合 count = session.update("com.jiheng.dao.IBookDao.updateBook",book); session.commit(); } catch (Exception e1) { e1.printStackTrace(); }finally { session.close(); } return count; }
映射文件BookMapper.xml中新添加一个修改语句:
UPDATE books SET bookname=#{bookname},author=#{author},category=#{category} WHERe id=#{id}
编写测试类TestBook01,新增方法:
public static void updateBook(){ IBookDao bookDao = new IBookDaoImpl(); Scanner input = new Scanner(System.in); System.out.println("请输入你要修改的学生的学号:"); int id = input.nextInt(); Book book = bookDao.findBookById(id); if(book!=null){ System.out.println("书籍信息如下:"); book.show(); System.out.println("修改书名:"); String bookname = input.next(); System.out.println("修改作者:"); String author = input.next(); System.out.println("修改分类:"); String category = input.next(); book.setId(id); book.setBookname(bookname); book.setAuthor(author); book.setCategory(category); bookDao.updateBook(book); }else{ System.out.println("该学生不存在!"); } }
最后在main方法里运行这个方法就可以,测试结果如下:
最后到数据库里查看,第一本书籍信息已经被成功修改了:
你学废了吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)