对于初学者,如果进行mybatis的学习呢?我总结了几点,会慢慢的更新出来。首先大家需要了解mybatis是什么、用mybatis来做什么、为什么要用mybatis、有什么优缺点;当知道了为什么的时候就开始了解如何用的问题,如何使用mybatis、有几种使用方式、各种方式的优缺点,在这个阶段也会学习mybatis涉及到的一些标签的用法;当知道了基础用法之后,就开始接触一些高级的用法,例如动态sql的使用、mybatis的缓存使用等;至此,在实战项目中使用mybatis进行开发已经没有问题了。
接下来就开始深入的研究一下mybatis这个持久层的框架,在纯技术的方面进行研究,提高自己的能力。首先,大家需要了解一下mybatis的整体技术架构和工作原理;接下来,就开始了解一下mybatis各大核心组件的具体功能及其工作原理。至此,算是对mybatis的原理简单的了解一下了,由于博主的能力有限,因此对于mybatis的框架技术研究也就到这里算结束了。
最后会了解一些其他的东西,例如:mybatis的逆向工程使用、如何开发一个mybatis插件,在这里会介绍一下mybatis的分页实现等。
至此,mybatis也算是入门了,出去就可以和别人说,你稍微了解mybatis框架,对其也多少有一点自己的理解和看法了。
目录
1、创建并实例化配置类,获取到SqlSessionFactory
2、添加sql映射文件,需要与对应的接口在统一目录下
3、进行数据查询操作
上一节 说到通过mybatis的全局配置文件 mybatis-config.xml 进行mybatis的配置,在启动应用时,mybatis会自动解析 mybatis-config.xml 进行初始化,其实这个过程就是 解析配置文件,实例化配置类 Configuration 的过程。
基于此,可以不通过全局配置文件初始化mybatis,而通过Configuration配置类实现,具体操作如下:
1、创建并实例化配置类,获取到SqlSessionFactory
public static SqlSessionFactory buildSqlSessionFactory(){SqlSessionFactory sqlSessionFactory = null;// 准备数据源连接信息DataSource dataSource = new PooledDataSource("com.mysql.cj.jdbc.Driver","jdbc:mysql://localhost:3306/app-oa?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT","root","*******");// 准备事务管理TransactionFactory transactionFactory = new JdbcTransactionFactory();// 构建一个环境Environment environment = new Environment("development" , transactionFactory, dataSource);// 实例化配置类Configuration configuration = new Configuration(environment);// 注册映射器类configuration.addMapper(UserMapper.class);// 获取SqlSessionFactory, 实例化结束sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);return sqlSessionFactory;
}
2、添加sql映射文件,需要与对应的接口在统一目录下
3、进行数据查询操作
public static void main(String[] args) throws IOException {// 获取 SqlSessionFactorySqlSessionFactory sqlSessionFactory = MybatisConfig.buildSqlSessionFactory();// 获取 SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过SqlSession进行接下来的数据处理操作UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.selectUser(5L);// 关闭 SqlSessionsqlSession.close();System.out.println(user);
}
这个就不详细介绍了,会用即可,如果感兴趣,可以看一下源码是如何处理。