栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis 基础教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis 基础教程

Mybatis 基础教程
  • 依赖引入
  • mybatis配置
    • xml配置
      • 配置
      • 启动mybatis并进行数据库操作
    • 通过java的方式进行配置
  • 相关对象的作用域和生命周期
    • SqlSessionFactoryBuilder
    • SqlSessionFactory
    • SqlSession

依赖引入

mybatis 目前最新的版本为mybatis3.如需使用mybatis,maven项目中需引入mybatis的依赖:

        
            org.mybatis
            mybatis
            3.5.10
        

然后需要引入相关的驱动:

        
            mysql
            mysql-connector-java
            8.0.29
        
mybatis配置 xml配置 配置

如果使用xml配置作为你的配置,一般的格式是这样的:
mybatis-config.xml




    
        
            
            
                
                
                
                
            
        
    
    
        
    

CountryMapper.xml




    
        select * from country where code = #{code}
    

上述配置中mybatis-config.xml配置了数据库连接和事务管理器。同时导入了一个CountryMapper.xml的配置文件。该配置文件中配置了一条根据code做为条件查询country表的一条记录。

上述的工作完成之后,我们需要创建相关的对象与接口,如下分别是对应的代码:
Country.java

import lombok.Data;

@Data
public class Country {
    private String code;
    private String name;
    private String continent;
    private String region;
    private String surfacearea;
    private String indepyear;
    private String population;
    private String lifeexpectancy;
    private String gnp;
    private String gnpold;
    private String localname;
    private String governmentform;
    private String headofstate;
    private String capital;
    private String code2;
}
启动mybatis并进行数据库操作

配置完成之后,需要程序加载配置并实例化一个SqlSession来进行数据库的操作:

        InputStream inputStream = Resources.getResourceAsStream("org/mybatis/mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        Country country = sqlSession.selectOne("org.mybatis.mapper.CountryMapper.selectCountry", "CHN");
        System.out.println(country);
        sqlSession.close();

通过上面的步骤,我们就加载了配置文件,并且可以调用对应的namespace,传递相关的参数查询出结果并进行封装。
同样,如果我们保持namespace同类名一致,sqlid同方法名一致时,我们可以直接通过java接口的方式进行调用:
CountryMapper.java

import org.mybatis.bean.Country;

public interface CountryMapper {
    Country selectCountry(String code);
}

调用的代码如下:

        CountryMapper countryMapper = sqlSession.getMapper(CountryMapper.class);
        System.out.println(countryMapper.selectCountry("CHN"));

这段代码同样可以完成查询,但不需要指定namespace,可以避免在编码时写错namespace导致的错误。

通过java的方式进行配置

上面的mybatis-config.xml配置的方式也可以用java的方式进行配置,配置的代码如下:

PooledDataSourceFactory pooledDataSourceFactory = new PooledDataSourceFactory();
        Properties properties = new Properties();
        properties.setProperty("driver", "com.mysql.cj.jdbc.Driver");
        properties.setProperty("url", "jdbc:mysql://localhost:3306/world_x?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=GMT");
        properties.setProperty("username", "root");
        properties.setProperty("password", "root");
        pooledDataSourceFactory.setProperties(properties);

        DataSource dataSource = pooledDataSourceFactory.getDataSource();

        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        Environment environment = new Environment("development", transactionFactory, dataSource);

        Configuration configuration = new Configuration(environment);
        configuration.addMapper(CountryMapper.class);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

通过这种方式可以在完全没有配置文件的情况下实现mybatis的配置。
但这里需要注意的是,CoutryMapper.xml必须和CoutryMapper.java目录保持一致。这样才能保证可以映射到对应的xml文件。
当然,如果你不希望使用xml作为sql的配置,上述例子你也可以使用注解的方式进行sql的配置:

package org.mybatis.mapper;

import org.apache.ibatis.annotations.Select;
import org.mybatis.bean.Country;

public interface CountryMapper {

    @Select("select * from country where code = #{code}")
    Country selectCountry(String code);
}

当然,两者也是可以共存的。这个视各项目情况和场景而定。

相关对象的作用域和生命周期

从上面的mybatis启动我们可以知道,mybatis在启动时会产生三个对象:SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession。这三个对象分别负责加载配置,创建Sqlsession和进行数据库操作。接下来就说一下这三个对象的生命周期。

SqlSessionFactoryBuilder

该对象负责读取配置,并根据配置信息生成SqlSessionFactory对象,该对象应该在SqlSessionFactory对象生成之后销毁。

SqlSessionFactory

该对象负责生成SqlSession,SqlSession主要用来进行数据库的读写操作并负责事务管理。所以SqlSessionFactory应该存在于应用的整个运行过程当中。

SqlSession

该对象主要用来进行数据库的读写操作并负责事务管理。所以该对象作用时间应该是一次会话期间(单次请求的过程中)。会话处理结束时应该调用它的close()方法关闭连接并释放资源。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号