本文分为两部分,第一部分介绍mybatis的核心原理及代码实现,第二部分介绍mybatis与spring的集成,及代码实现。
1、mybatis原理:
mybatis使用动态代理技术,基于Mapper接口,生成代理类,在代理类中拿到sql语句,链接数据库执行。
代码实现
简单实现如下,项目结构:
pom文件添加对mytis的依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
mapper
public interface UserMapper {
@Select("select * from User")
List<UserDo> query();
}
简单写一个实体类,可不要,mapper文件返回map即可
@Data
public class UserDo {
private Integer id;
private String name;
}
模拟session的getMapper方法(动态代理)
public class Mysession {
public static <T> T getMapper(Class<T> type) {
return (T)Proxy.newProxyInstance(Mysession.class.getClassLoader(), new Class[]{type}, new MyInvocationHandler());
}
}
写一个handler,获取sql,连接数据库执行
public class MyInvoca