Mybaits概述
首先mybatis是一个长久层框架,底层基于JDBC与数据交互。
springboot会基于mybatis底层框架创立SqlSessionFactory对象,在通过这个工厂对象去创立SqlSession,通过spring框架把sqlsession注入测试类中,从而拜访数据库。
@Mapper
用于形容长久层的接口,通知spring框架这个接口的实现类由mybatis创立,并将其交给spring框架治理
@Mapper作用于接口上的时候,咱们能够不用手动写出它的实现类,能够节约许多的工夫。
然而要留神的是@Mapper润饰的接口不能呈现重名办法,也就是说不能进行办法的重载,这样的话id会反复从而报错。
在数据库执行办法较为简便的时候还能够应用全注解开发,在底下办法上增加@Select(sql)进行开发,从而省略xml文件的编写。
实例(蕴含日志记录)
创立Goods类
package com.cy.pj.goods.pojo;import java.util.Date;public class Goods { private Long id; private String name; private String remark; private Date createdTime; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Date getCreatedTime() { return createdTime; } public void setCreatedTime(Date createdTime) { this.createdTime = createdTime; }}
创立GoodsMapper.xml配置文件
namespace为接口的全门路
idwei接口中所应用的办法,
resultType为返回的后果集,在本次业务中所填写的是Goods的全门路。
如果执行的是增删改操作是,返回的是所扭转的行数,能够不填写resultType。
<?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"><mapper namespace="com.cy.pj.goods.dao.GoodsDao"> <select id="findGoods" resultType="com.cy.pj.goods.pojo.Goods"> select * from tb_goods </select></mapper>
创立GoodsDao接口
package com.cy.pj.goods.dao;import com.cy.pj.goods.pojo.Goods;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapperpublic interface GoodsDao { List<Goods> findGoods();}
创立GoodsService接口
package com.cy.pj.goods.service;import com.cy.pj.goods.pojo.Goods;import java.util.List;public interface GoodsService { List<Goods> findGoods();}
GoodsService接口的实现类创立
package com.cy.pj.goods.service;import com.cy.pj.goods.dao.GoodsDao;import com.cy.pj.goods.pojo.Goods;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class GoodsServiceIml implements GoodsService{ @Autowired private GoodsDao goodsDao; @Autowired private static final Logger log= LoggerFactory.getLogger(GoodsService.class); @Override public List<Goods> findGoods() { Long t1=System.currentTimeMillis(); List<Goods> list=goodsDao.findGoods(); Long t2=System.currentTimeMillis(); log.info("findGoods()->t2-t1={}",t2-t1); return list; }}
创立测试类
package com.cy.pj.goods.service;import com.cy.pj.goods.pojo.Goods;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTestpublic class GoodsServiceTests { @Autowired private GoodsService goodsService; @Test void testFindGoods(){ List<Goods> list=goodsService.findGoods(); for (Goods g:list){ System.out.println(g); } }}