①、在我们的yaml文件中对我们的全局配置文件和sql语句映射文件进行相应的路径指定
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
configuration: classpath:mybatis/mybatis-config.xml
(我们也可以使用config-location: 代替我们的configuration,但是
需要注意的是我们二者不能同时使用,不然系统无法确定我们要以哪个为我们的
配置)
②、编写我们的数据库的一条记录,我们以一个类进行代替(即我们的ORM:关系类型映射)
@Data
public class Fruit {
private Integer fid;
private String fname;
private Integer price;
private Integer fcount;
private String remark;
}
需要注意的是我这里使用lombok中的Data注解代替我们的get和set方法。
我们这个类就是数据库中一条关系的映射
③、编写我们的mapper接口,即我们进行数据库操作,每个操作对应我们该接口的一个方法
@Mapper
public interface FruitMapper {
Fruit getFruit(int fid);
}
④、编写我们的mapper配置文件,也即就是我们具体SQL语句操作
<?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.atguigu.boot.mapper.FruitMapper">
<select id="getFruit" resultType="com.atguigu.boot.bean.Fruit">
SELECT * from t_fruit where fid = #{fid}
</select>
</mapper>
其中namespace指的就是我们的接口类的全类名,resultType指的就是我们返回结果的类型,id就是我们接口中的方法名,使用我们的#{XX}将我们的方法参数提取出来。
二、测试:
①、编写我们的Service类:
@Service
public class fruitService {
@Autowired
FruitMapper fruitMapper;
public Fruit getFruitByid(int id){
return fruitMapper.getFruit(id);
}
}
使用自动装载将我们的mapper接口装载起来
②、编写控制器
@Controller
public class mybatisController {
@Autowired
fruitService fruitService;
@ResponseBody
@GetMapping("/fruit")
public Fruit getFruit(@RequestParam("id") int id){
return fruitService.getFruitByid(id);
}
}
表示当访问我们的localhost/fruit?id = X时,我们就会调用我们的fruitService中的getFruitByid方法,因为我们getFruitById()是一个接口方法,而这个接口又是mapper,所以我们就会调用了sql的映射mapper,进而执行了我们的sql语句。