MyBatis 持久层框架
来源:互联网 发布:淘宝店铺淘金币签到 编辑:程序博客网 时间:2024/05/17 08:58
Maven dependency :
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency>XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。简单的示例:
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/><dataSource type="com.test.BoneCPDataSourceFactory"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/><property name="partitionCount" value="${bonecp.partitionCount}"/><property name="maxConnectionsPerPartition" value="${bonecp.maxConnectionsPerPartition}"/> <property name="minConnectionsPerPartition" value="${bonecp.minConnectionsPerPartition}"/> <property name="acquireIncrement" value="${bonecp.acquireIncrement}"/> <property name="disableConnectionTracking" value="true"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers></configuration>
。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息)
数据源 使用 BoneCP连接池的数据源:
import com.testBoneCPDataSource;import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;public class BoneCPDataSourceFactory extends UnpooledDataSourceFactory { public BoneCPDataSourceFactory() { this.dataSource = new BoneCPDataSource(); }}
不使用 XML 构建 SqlSessionFactory
如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();TransactionFactory transactionFactory = new JdbcTransactionFactory();Environment environment = new Environment("development", transactionFactory, dataSource);Configuration configuration = new Configuration(environment);configuration.addMapper(BlogMapper.class);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套 Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下, BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)
SqlSession 实例:
SqlSession session = sqlSessionFactory.openSession();try { Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);} finally { session.close();}
public void init() { if (sqlSessionFactory != null) return; try { ClassLoader origLoader = Thread.currentThread().getContextClassLoader(); ClassLoader extensionLoader = getClass().getClassLoader(); Thread.currentThread().setContextClassLoader(extensionLoader); InputStream in = getClass().getResourceAsStream("/" + LOCAL_MYBATIS_FILE); Properties properties = GameEngine.getInstance().getConfigProperties(); properties.setProperty("local.jdbc.url", PropertyFileReader.getRealTimeItem("local.jdbc.url")); sqlSessionFactory = new SqlSessionFactoryBuilder().build(in, properties); Thread.currentThread().setContextClassLoader(origLoader); logger.info("mybatis is ready"); } catch (Exception e) { logger.error(e); } }org.apache.ibatis.builder.xml.XMLConfigBuilder 解析类主要解析方法:
public Configuration parse() { if (parsed) { throw new BuilderException("Each MapperConfigParser can only be used once."); } parsed = true; parseConfiguration(parser.evalNode("/configuration")); return configuration; } private void parseConfiguration(XNode root) { try { typeAliasesElement(root.evalNode("typeAliases")); pluginElement(root.evalNode("plugins")); objectFactoryElement(root.evalNode("objectFactory")); objectWrapperFactoryElement(root.evalNode("objectWrapperFactory")); propertiesElement(root.evalNode("properties")); settingsElement(root.evalNode("settings")); environmentsElement(root.evalNode("environments")); typeHandlerElement(root.evalNode("typeHandlers")); mapperElement(root.evalNode("mappers")); } catch (Exception e) { throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e); } }
官网配置:http://www.mybatis.org/mybatis-3
阅读全文
0 0
- 持久层框架---MyBatis
- 持久层框架--mybatis
- MyBatis 持久层框架
- 持久层框架之MyBatis
- Java数据持久层框架 MyBatis
- J2EE持久层框架mybatis配置文件写法
- J2EE持久层框架mybatis配置文件写法
- Mybatis持久层框架(详细讲解)
- MyBatis持久层框架使用总结
- 持久层框架:Mybatis快速入门
- 毕设-使用持久层框架Mybatis
- Mybatis持久层构架
- Mybatis持久层配置
- Mybatis持久层配置
- Mybatis 基于Java的持久层框架(一)
- Mybatis 基于Java的持久层框架(二)
- java持久层框架mybatis如何防止sql注入
- java持久层框架mybatis如何防止sql注入
- Spring mvc(3)如何获取所有的requestMapping
- TIME_WAIT状态
- Spring Boot (教程七: servlet)
- LeetCode 16. 3Sum Closest
- java学习第一天
- MyBatis 持久层框架
- 前台向后台传递参数时,特殊字符(+、-)丢失的问题
- tensorflow安装(windows,linux均可)
- 标签和js对象绑定事件以及传参问题
- Session的创建时机
- 7z命令行操作指南之解压缩
- EMV规范(六)——处理限制
- 如何将自己的Python代码打包发布到pypi上
- MyBatis基础(1)