首页 > 其他分享 >Mybatis如何读取配置文件

Mybatis如何读取配置文件

时间:2023-06-29 17:22:56浏览次数:32  
标签:语句 SqlSessionFactory 读取 配置文件 映射 SQL Mybatis

一、Mybatis读取配置文件过程

  1. 首先,Mybatis会读取配置文件mybatis-config.xml。这个配置文件包含了MyBatis的全局配置信息,例如数据库连接信息、类型处理器、映射器等。

  2. Mybatis解析mybatis-config.xml文件,获取配置信息。它使用XML解析器来解析配置文件,将配置信息转换为内部的数据结构。

  3. 一旦配置文件被解析,Mybatis就会初始化一个SqlSessionFactory对象。SqlSessionFactory是Mybatis的核心对象,它用于创建SqlSession对象。

  4. SqlSessionFactory会根据配置文件中的数据源信息,创建一个数据库连接池,并配置一些连接池的属性,例如最大连接数,最小空闲连接数等。

  5. SqlSessionFactory还会解析配置文件中的类型处理器和映射器信息。类型处理器用于处理Java对象和数据库之间数据的转换,映射器用于定义SQL语句和Java方法之间的映射关系。

  6. SqlSessionFactory一旦被创建,就可以通过它来获取SqlSession对象。SqlSession对象是Mybatis的核心会话对象,它提供了执行SQL语句和管理事务的方法。

总结起来,MyBatis的配置文件包含了全局配置信息和SQL映射信息,MyBatis通过解析配置文件来获取这些信息,并根据配置信息初始化SqlSessionFactory。然后,通过SqlSessionFactory获取SqlSession对象,用于执行SQL语句和管理事务。
需要注意的是,MyBatis还支持注解方式来配置和映射SQL语句,这样就不需要使用XML配置文件了。在注解方式中,可以使用@MapperScan注解来扫描Mapper接口,并自动注册到SqlSessionFactory中。这样就可以直接使用注解方式来执行SQL语句,而无需编写XML映射文件。

二、代码实例

  1. 假设有一个名为User的Java类,对应数据库中的user表。使用MyBatis来执行查询操作,并且使用XML配置文件来定义SQL语句和映射关系。
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
        <property name="username" value="root" />
        <property name="password" value="password" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="UserMapper.xml" />
  </mappers>
</configuration>

以上配置中,指定了数据库连接信息,包括驱动、URL、用户名和密码。同时,也指定了映射器配置,其中UserMapper.xml是将在下一步创建的映射文件。


2. 创建一个UserMapper.xml映射文件,其中定义了SQL语句和结果映射关系。假设映射文件内容如下:

<mapper namespace="com.example.UserMapper">
  <select id="getUserById" resultType="com.example.User">
    SELECT * FROM user WHERE id = #{id}
  </select>
</mapper>

在以上映射文件中,定义了一个名为getUserById的查询语句,它将根据给定的id参数从user表中查询一条记录。resultType属性指定了查询结果的Java对象类型。


3. 通过Mybatis来执行查询操作。首先创建一个SqlSessionFactory对象,代码如下:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

在上述代码中,使用Resources.getResourceAsStream()方法加载配置文件,并使用SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象。


4. 有了SqlSessionFactory对象后,可以使用它来创建SqlSession对象,代码如下:

SqlSession sqlSession = sqlSessionFactory.openSession();

5.现在可以使用SqlSession对象执行SQL语句了。假设要执行getUserById查询语句,代码如下:
User user = sqlSession.selectOne("com.example.UserMapper.getUserById", 1);

在上述代码中,使用selectOne()方法执行查询语句,并指定了查询语句的唯一标识符和参数。


6.最后,记得关闭SqlSession对象,代码如下:

sqlSession.close();

三、总结

通过以上步骤,就完成了使用MyBatis执行查询操作的过程。MyBatis会根据配置文件中的信息,初始化数据库连接池和映射器,并根据映射文件中的配置,执行相应的SQL语句,并将结果映射为Java对象。

标签:语句,SqlSessionFactory,读取,配置文件,映射,SQL,Mybatis
From: https://www.cnblogs.com/spella/p/17513728.html

相关文章

  • springboot整合mybatis
    1,在application.yml中配置点击查看代码#mybatis#配置mapper路径mybatis:mapper-locations:classpath:mapper/*.xml2,在每个DAO接口上面追加@Mapper注解-------------------------------------------------------------增删改查的实现代码application.yml配......
  • Mybatis中查询出来的部分数据为空,能查出行部分字段为空
    同样的sql语句,在数据库中能查出完整的行数据在mybatis中返回数据中能查出行,但是部分有值的字段为空。首先检查缓存,没问题的话大概率是因为mybatis自动映射的关系:1.列名不匹配:自动映射会根据数据库中的列名和对象属性名进行映射,如果列名和属性名不匹配,就会导致数据为空。确保数......
  • mybatis 动态数据源核心--AbstractRoutingDataSource
    1publicabstractclassAbstractRoutingDataSourceextendsAbstractDataSourceimplementsInitializingBean{2@Nullable3privateMap<Object,Object>targetDataSources;4@Nullable5privateObjectdefaultTargetDataSource;......
  • Labview 与汇川AM400 AM600 AM800 AC800 PLC 通讯 官方协议,报文读取,安全稳定
    Labview与汇川AM400AM600AM800AC800PLC通讯官方协议,报文读取,安全稳定。程序代开发,代写程序。通讯配置,辅助测试。无程序网络通讯实现。常用功能一网打尽。1.命令帧读写。2.支持I16I32Float批量读写。3.支持字符串读写。4.支持Bool批量读写。5.支持Q单点读写。......
  • springboot mybatis mapper 注入原理浅析
    spring+mybatis是我们常用的开发组合,一般情况,我们只需要写一个Mapper接口 加上@Mapper注解就可以使用了,那么他的工作原理是什么呢?标准mybatis调用应该是这样的流程1//读取配置2InputStreamconfig=Resources.getResourceAsStream("mybatis-config.xml");3//根......
  • day 113- mybatis的查询resultMap
    mybatis中的resultMapresultMap用来处理字段名和属性名不一致的情况,处理映射关系若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射<!--字段名和属性名不一致的情况,处理映射关系:1.为查询的字段设置别名,和属性名保持一致2.当字段符合MySQL......
  • mybatisplus跨库操作和@Transactional一起使用的问题
    1、当方法使用了@Transactional注解,mybatisplus切换库之前已经有对当前库进行操作的话,切库将不成功;2、当方法使用了@Transactional注解,mybatisplus切换库之前没有对当前库进行操作的话,切库成功,但是@Transactional注解好像没有生效,操作报异常之后上一个操作没有回退;......
  • mybatis generator生成乱码问题
    mybatisgenerator生成的文件可能会乱码,通过在Eclipse_Home/eclipse.ini文件中,指定-Dfile.encoding=UTF-8,参考截图openFile-vmargs-Dosgi.requiredJavaVersion=1.5-Xms40m-Xmx512m-Dfile.encoding=UTF-8-D,是java命令的一个选项,-D后面需要跟一个键值对......
  • Spring Boot 之 Mybatis Plus 分页插件
    创建分页插件所在的类MybatisPlusConfiguration,并添加注解@Configuration在配置类中添加以下代码@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){/***MybatisPlusInterceptor是插件主体,管理所有的插件*/MybatisPlusInterceptorinter......
  • 如何解析和读取mysql binlog
    要解析和读取MySQL的二进制日志(binlog),可以使用一些工具和方法。MySQL官方提供的工具:MySQL自带了一个名为mysqlbinlog的命令行工具,可以用于解析和读取二进制日志。通过执行以下命令,您可以查看二进制日志的内容:mysqlbinlog[options][binlog_files]options是......