转自http://blog.csdn.net/qq_29227939/article/details/52029065 public class MybatisUtil { private static SqlSessionFactory factory; // 解决资源争抢问题. private static ThreadLocal<SqlSession> localSessions = new ThreadLocal<SqlSession>(); static { Reader…
在本线程中添加object数据,必须在本线程中才能获取出来..其他线程获取不到. public class Test { public static void main(String[] args) { final ThreadLocal<String> thread=new ThreadLocal<>(); thread.set("助兴"); new Thread(){ @Override public void run() { String temp=thr…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- getMapper的作用,获取到接口,直接通过点的方式调用方法,以免直接手打的方式写错方法名,(强类型的方式) 例子: IBookDAO mapper = session.getMapper(IBookDAO.class); List<Book> list = mapper.findAllBook(); 那个工具类,主要是获取SqlSession对象,写法 package cn.dawn.util; im…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先点进去看一下insert方法 用ctrl加鼠标左键点进去看 发现是一个接口SqlSession的方法,没有实现 ,但是通过里氏替换原则的想法,他是接口接收了实现类,所以找他的实现类DefaultSqlSession(idea快捷键ctrl+H) 进去后用ctrl+F查找insert,可以看到多个insert方法构成的重载,但是他们的方法实现调用了这个 public int insert(String st…
在之前的文章中我们了解到最终的数据库最终操作是走的代理类的方法: @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this.executorType, Sql…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 经过上几次的查找,笔者我就简单的说一下查找的思路,留给读者自己实践 同样找到sqlsession的实现类,----DefaltSqlSession,找它的close方法 public void close() { try { this.executor.close(this.isCommitOrRollbackRequired(false)); this.closeCursors(); this.dirty…
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 如题目所示,本小章节讨论为什么SqlSession的commit会造成事物的提交 首先先看SqlSession的commit()他是一个接口的方法,所以去他的实现类找(Ctrl+H)DefaultSqlSession类中查找他的commit无参数的方法,因为我们调用的也是他的无参方法,往下看 public void commit() { this.commit(false); } public void…
public void addCustomerTest() throws Exception { SqlSession sqlSession = MyBatisUtils.getSession(); CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class); Customer customer = new Customer(); customer.setUsername("111"); cust…
Mybatis中的一级缓存和二级缓存         一级缓存:             它指的是Mybatis中SqlSession对象的缓存.             当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中.             该区域的结构是一个Map.当我们再次查询同样的数据,mybatis会先去sqlsession中             查询是否有,有的话直接拿出来用.             当SqlSession对象消失时,myb…
如下所有举例基于springboot+mybatis项目中,SSH使用mybatis的写法也一样,只是形式不同而已 问题1.org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found.的问题解决办法 该问题的产生主要是mybatis中实例对象与xml文件之间映射关系上方法传参出现问题: 1.当方法中不传参或者只传一个参数 public interface UserMapper { List<User> selec…