springmvc mybatis 原理

 public class ChickenAntiMonitorServiceImpl implements ChickenAntiMonitorService {
    @Autowired(required=true)
    private SqlSessionTemplate sessionTemplate;
    /**
     * 查询抗体监测数据
     */
    public List<ChickenAntiMonitorBean> selectAntiMonitorData(
            ChickenAntiMonitorBean param) {
        ChickenAntiMonitorDao dao = sessionTemplate.getMapper(ChickenAntiMonitorDao.class);
        return dao.selectAntiMonitorData(param);
    }
    /**
     * 新增抗体监测数据
     */
    public Map<String, Object> insertAntiMonitor(ChickenAntiMonitorBean param) {
        ChickenAntiMonitorDao dao = sessionTemplate.getMapper(ChickenAntiMonitorDao.class);
        return dao.insertAntiMonitor(param);
    }
    /**
     * 修改抗体监测数据
     */
    public Map<String, Object> updateAntiMonitor(ChickenAntiMonitorBean param) {
        ChickenAntiMonitorDao dao = sessionTemplate.getMapper(ChickenAntiMonitorDao.class);
        return dao.updateAntiMonitor(param);
    }
    /**
     * 删除抗体监测数据
     */
    public Map<String, Object> deleteAntiMonitor(ChickenAntiMonitorBean param) {
        ChickenAntiMonitorDao dao = sessionTemplate.getMapper(ChickenAntiMonitorDao.class);
        return dao.deleteAntiMonitor(param);
    }

}

请问mapper 为什么每个方法都实例化一次,不能只全局一次,
还有原理要在哪看,感觉只是会用,很迷茫

ChickenAntiMonitorDao dao 是能全局一次的,只是你们的系统没有封装起来使用。
很多例子有把dao提取到全局变量的,参考:https://blog.csdn.net/guoshengkai373/article/details/52355069

mybatis原理就是封装了jdbc操作数据库。建议你不用框架,用jdbc实际写个例子访问数据库实现增删查。实现之后你可以对比框架,就能明白框架封装的是那一部分代码了。

写法不一样。。。搁我我是这样:
@Autowired
private ChickenAntiMonitorDao dao;

public List selectAntiMonitorData(
ChickenAntiMonitorBean param) {
return dao.selectAntiMonitorData(param);
}
SqlSessionTemplate主要就是为了线程安全吧。。。
不是太懂,而且感觉sessionTemplate.getMapper()并不是实例化,而是获取已经实例化过后的对象;这样才能保证线程安全;
至于原理在哪看,你可以在配置文件一行一行的搜为什么这样配置,都能搜到,会学到很多。
我也是菜鸟,大家共同进步吧

这个地方是依赖注入,另外一种说法是依赖抽象不依赖于具体实现。请问mapper 为什么每个方法都实例化一次,不能只全局一次? 回答:因为这些SQL
的操作都是一次性的,并不是长时间不停的运行的。放到全局里面的数据是要做到可以被全部用户共享的,显然这里没做到。具体原理的话,springMVC
的具体原理要从spring的具体原理入手,mybatis的具体原理要从JDBC入手