**概括:
1 mybatis是半自动化的ORM框架,之所以这么说是因为mysql需要自己写SQL语句;
2 mybabtis的核心配置文件是mybatis-config.xml;
3 mybatis是面向接口编程的;
4 mybatis的核心接口是SqlSessionFactory,它存在于程序的整个生命周期;
5 mybatis的实体、mapper接口、mapper.xml可以由代码生成器mybatis-generator生成,且自动生成的仅限于对单表的操作;
6 mybatis与spring的集合,简化了SqlSessionFactory,SqlSession的获取,使得这些操作对我们都透明化;
7 mybais的一级缓存默认是打开的,且一级缓存的生命周期是方法级别的,即session独享的。二级缓存在于SqlSessionFactory生命周期内,即session共享的,所以二级缓存容易出现脏读,一般用redis、memcache等代替二级缓存。增删改操作会刷新一二级缓存。(flushCache一级缓存开关,cacheEnabled二级缓存开关)。
mybatis的使用:
1导入mybatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
2增加mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<!-- 别名定义 -->
<typeAliases>
<package name="com.zoie.restaurant.entity"/>
</typeAliases>
<!--配置environment环境 -->
<environments default="development">
<!-- 环境配置1,每个SqlSessionFactory对应一个环境 -->
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="UNPOOLED">
<property name="driver" value="${jdbc_driver}" />
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
</dataSource>
</environment>
</environments>
<!-- 映射文件,mapper的配置文件 -->
<mappers>
<!--直接映射到相应的mapper文件 -->
<mapper resource="mapper/TRoleMapper.xml" />
<mapper resource="mapper/TUserMapper.xml" />
<mapper resource="mapper/TUserRoleMapper.xml" />
<mapper resource="mapper/TRightMapper.xml"/>
<mapper resource="mapper/TRoleRightMapper.xml"/>
</mappers>
<!-- <mapper class="com.enjoylearning.mybatis.mapper.TJobHistoryAnnoMapper"/>
</mappers> -->
</configuration>
3使用mybatis-generator生成entity实体,mapper接口,mapper.xml文件
需要导入mybais-generator的相关依赖,及generatorConfig.xml配置文件,最后mvn mybatis-generator:generator运行即可
4写测试类进行测试
public class UserTest {
SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws IOException {
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
inputStream.close();
}
@Test
public void getUser(){
SqlSession sqlSession=sqlSessionFactory.openSession();
TUserMapper tUserMapper=sqlSession.getMapper(TUserMapper.class);
TUser user=tUserMapper.selectByPrimaryKey(1L);
System.out.println(user.getName());
System.out.println(user.getRoles());
}
}