当前位置: 首页 > 后端技术 > Java

Mybatis基础Java开发框架介绍

时间:2023-04-01 16:11:13 Java

MyBatis什么是MyBatis?MyBatis是Java的持久层框架。GitHub上的star数高达15.8k。它是Java技术栈中最流行的ORM框架之一。它支持自定义SQL、存储过程和高级java训练映射,可以通过XML或注解将原始类型、接口和JavaPOJO配置和映射为数据库中的记录。POJOs,PlainOldJavaObjects,纯传统Java对象,最基本的JavaBean只有属性加上属性的get和set方法。安装Mavenpom.xml:org.mybatismybatisx.x.xSqlSessionFactorySqlSessionFactory的实例是每个MyBatis应用的核心.由SqlSessionFactoryBuilder创建,可以基于XML进行配置,也可以使用Configuration类。基于XML配置:Stringresource="org/mybatis/example/mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);在实际项目中,不会手动设置XML文件路径,而是直接读取classpath来查找XML。使用配置类:DataSourcedataSource=BlogDataSourceFactory.getBlogDataSource();TransactionFactorytransactionFactory=newJdbcTransactionFactory();Environmentenvironment=newEnvironment("development",transactionFactory,dataSource);Configurationconfiguration=newConfiguration(BurningMapper.addconfig;environment)。班级);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(配置);由于Java注解的一些限制和一些MyBatis映射的复杂性,MyBatis会更喜欢XML配置。在上面的例子中,MyBatis会根据classpath和BlogMapper.class找到BlogMapper.xml。SqlSessionSqlSessionFactory可以创建一个SqlSession实例,SqlSession提供了在数据库中执行SQL的所有方法。例如:try(SqlSessionsession=sqlSessionFactory.openSession()){BlogMappermapper=session.getMapper(BlogMapper.class);Blogblog=mapper.selectBlog(101);}后面的SQL语句隐藏在mapper.selectBlog()方法后面SQL语句配置在XML文件中。一般的XML配置信息如下:环境配置数据源和连接池。mapper包含SQL语句:select*fromBlogwhereid=#{id}mapper.selectBlog()方法映射到XML中的idselectBlog。值得注意的是,对于简单的SQL,可以直接使用Java注解:packageorg.mybatis.example;publicinterfaceBlogMapper{@Select("SELECT*FROMblogWHEREid=#{id}")BlogselectBlog(intid);}但是对于复杂的SQL写XML更方便。作用域和生命周期从前面几节我们知道SqlSessionFactoryBuilder→SqlSessionFactory→SqlSession→Mapper实例对象产生链接。接下来看一下它们各自的作用域和生命周期:SqlSessionFactoryBuilder作用域是method,用完后Release,避免XML解析资源占用。SqlSessionFactory的作用域是应用,只要创建就一直存在,可以通过单例模式实现。SqlSession的作用域是request或者method,每个线程都有一个唯一的副本。每收到一个HTTP请求,就打开一个SqlSession,返回response后关闭。下面的代码可以保证每次都关闭:try(SqlSessionsession=sqlSessionFactory.openSession()){//dowork}Mapper实例由SqlSession创建,作用域相似,但建议放在方法并在用完时释放它们。例如:try(SqlSessionsession=sqlSessionFactory.openSession()){BlogMappermapper=session.getMapper(BlogMapper.class);//做工作}