基于JDBC的MyBatis应用

MyBatis简介:

MyBatis是一个开源,轻量级数据持久化框架。其内部封装了JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,我们只需关注 SQL 语句本身即可。数据持久化通俗来讲就是将操作所产生的数据或对数据的增删改永久的保存下来。

MyBatis是一个半自动化的ORM实现,通过建立实体类与SQL语句之间的映射关系Mapper实现数据查询。ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据。

快速搭建MyBatis工程:

1.导入mybatis依赖: lib文件中是mybatis的依赖,需要一同导入工程lib目录

2.根据数据表字段名创建实体类,全部放在src下的entity包中

3.根据实体类名创建SQL映射文件,每个mapper.xml映射文件都有对应的mapper接口类,同一放置于src下的mapper包中,所有mapper.xml文件有固定格式

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace属性:设置当前映射器的命名空间 -->
<mapper namespace="mapper.映射文件名">
--    SQL语句
</mapper>

4.创建核心配置文件mybatis-config.xml,放在是src目录中,用于配置数据库连接和 MyBatis运行时所需的各种特性

<?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>
    <!-- 设置框架参数 -->
    <settings>
        <!-- 日志 -->
        <setting name="logImpl" value="LOG4J" />
    </settings>
    <!-- 配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用JDBC的事务管理 -->
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!-- MySQL数据库驱动 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <!-- 连接数据库的URL -->
                <property name="url"
                          value="jdbc:mysql://localhost:3306/数据库名?charset=utf8mb4&amp;useSSL=false&amp;useTimezone=true&amp;serverTimezone=GMT%2B8" />
                <property name="username" value="root" /> <!-- 数据库账户 -->
                <property name="password" value="123456" /> <!-- 数据库密码 -->
            </dataSource>
        </environment>
    </environments>

    <!-- 将mapper文件加入到配置文件中 -->
    <mappers>
        <!--1.按照XML文件路径加载SQL映射文件-->
        <mapper resource="mapper/UserMapper.xml" />
        <mapper resource="mapper/WebsiteMapper.xml" />
        <!--2.按照SQL接口加载-->
        <mapper class="mapper.UserMapper" />
        <mapper class="mapper.WebsiteMapper"/>
        <!--3.按照包名加载(推荐)-->
        <package name="mapper"/>
    </mappers>
</configuration>

5.测试类,位于src目录下的Test包中

public class Test {
    public static void main(String[] args) throws IOException {
        // 读取配置文件mybatis-config.xml
        InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
        
        // 根据配置文件构建SqlSessionFactory
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
        
        // 通过SqlSessionFactory创建SqlSession
        SqlSession ss = ssf.openSession();
        
        // SqlSession执行文件中定义的SQL,并返回映射结果
        
        //关闭SqlSession
        ss.close;
    }
}

由测试类可以看出,mybatis框架的核心对象执行流程为:

144422M58-0.png

SqlSessionFactoryBuilder对象:

作用:获取 SqlSessionFactory 对象,可以根据 XML 配置文件或者 Configuration 类的实例构建该对象

生命周期:创建出SqlSessionFactory对象后便不再需要,最佳作用域是方法作用域(也就是局部方法变量),这样便可以重复使用

SqlSessionFactory对象:获取 SqlSession 实例

生命周期:一旦被创建就应该在应用的运行期间一直存在,最佳作用域是"应用作用域"

SqlSession对象:其中完全包含以数据库为背景的所有执行 SQL 操作的方法,用该实例可以直接执行已映射的 SQL 语句

生命周期:每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,最佳的作用域是请求或方法作用域,在创建时应当放置于finally块之中

而基于mybatis框架的核心对象的特性,我们将其封装在一个方法类MyBatisUtils当中,置于src目录下的Dao包之中

// MyBatis工具类
public class MyBatisUtils {
	private static SqlSessionFactory factory = null;

	static {
		String config = "mybatis-config.xml";
		try {
			InputStream in = Resources.getResourceAsStream(config);
			factory = new SqlSessionFactoryBuilder().build(in);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static SqlSession getSqlSession() {
		SqlSession sqlSession = null;
		if (factory != null) {
			sqlSession = factory.openSession();
		}
		return sqlSession;
	}
}

在测试类中调用时只需调用方法即可:

// 使用工具类创建Sqlsession对象
try(SqlSession sqlSession = MyBatisUtils.getSqlSession()){
            // 方式1: 根据映射操作(MapperStatement)的名称查找 (namespace+id)
			// int row = sqlSession.insert("com.apesource.mapper.WebsiteMapper.insertWebsite",website);
		
			// 方式2:获取映射器(通过映射器接口)
			// 根据映射器接口,创建该接口的代理对象
			UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //执行SQL查询方法
			List<User> userList = userMapper.selectUserList();
}

向上攀爬的痛苦,终会在登顶时烟消云散
——ZQY

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: sharing-jdbc是一个基于Java的开源数据库中间件,提供了对数据库连接池、数据库读写分离、分库分表等功能的支持。使用sharing-jdbc可以简化我们对数据库的操作,提高系统的性能和可扩展性。 MyBatis是一个持久层框架,它提供了对数据库的操作方法和SQL语句的映射。在使用MyBatis时,我们可以配置数据源和数据库连接信息。将sharing-jdbcMyBatis结合使用,可以实现对数据库的读写分离和分库分表功能。 Spring Boot是一个快速开发Spring应用的框架,它提供了简化配置和集成的功能。在Spring Boot应用中,我们可以使用YAML文件(.yml)来配置应用的各种参数和组件。通过在YAML配置文件中添加相应的配置信息,可以实现sharing-jdbcMyBatis和Spring Boot的集成和配置。 在YAML配置文件中,我们需要配置数据库连接信息、数据源、MyBatis的相关配置和sharing-jdbc的相关配置。例如,我们可以配置数据库的URL、用户名和密码,指定MyBatis的映射文件路径和配置文件路径,以及指定sharing-jdbc的相关信息。 配置sharing-jdbc的方式如下: ```yaml sharing-jdbc: dataSources: - name: dataSource1 dataSourceClassName: com.mysql.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3306/db1 username: root password: password1 shardingRuleConfigs: - defaultDataSourceName: dataSource1 defaultDatabaseStrategy: inline: algorithmExpression: ds_${user_id % 2} defaultTableStrategy: standard: algorithmExpression: t_${user_id % 16} bindingTables: - table_patterns: user_${0..15} actualDataNodes: dataSource1.user_${0..15} ``` 在以上示例中,我们配置了一个数据库连接池(dataSource1),并指定了数据源的相关信息。然后,我们配置了分库分表的规则,根据用户ID分配数据库和数据表,并将其与数据源绑定。 通过这样的配置,我们可以在Spring Boot应用中方便地使用sharing-jdbcMyBatis操作数据库,并利用分库分表功能提高应用的性能和扩展性。 ### 回答2: 在使用Spring Boot中整合Sharing-JDBCMyBatis时,我们可以使用yml配置文件来配置相关信息。 首先,我们需要在yml配置文件中设置Sharing-JDBC的数据源配置。具体配置内容如下: ``` # Sharing-JDBC 数据源配置 sharing: shardingsphere: datasource: name: # 数据源名称 url: # 数据库连接地址 username: # 数据库用户名 password: # 数据库密码 driver-class-name: # 数据库驱动类名 ``` 其中,name表示数据源的名称,url表示数据库连接地址,username表示数据库用户名,password表示数据库密码,driver-class-name表示数据库驱动类名。 接下来,我们需要配置MyBatis的相关信息。具体配置内容如下: ``` # MyBatis配置 mybatis: mapper-locations: classpath:mapper/*.xml # MyBatis Mapper文件的存放位置 type-aliases-package: com.example.model # 实体类的包名 ``` 其中,mapper-locations表示Mapper文件的存放位置,type-aliases-package表示实体类的包名。 然后,我们需要在Spring Boot的主配置类中使用@MapperScan注解来扫描Mapper接口所在的包,并将其注册为Spring Bean。具体配置内容如下: ```java @Configuration @MapperScan("com.example.mapper") // Mapper接口所在的包 public class MybatisConfig { } ``` 在以上配置完成之后,我们可以在项目中使用Sharing-JDBCMyBatis进行数据库访问。比如,创建一个Mapper接口和对应的Mapper XML文件,进行SQL的编写和数据库操作。 以上就是使用Sharing-JDBCMyBatis和Spring Boot整合的yml配置方式。通过配置yml文件,我们可以方便地配置数据源、MyBatis等相关信息,简化项目的配置和管理。 ### 回答3: sharing-jdbc是一个基于Java数据库中间件,可以方便地支持数据库的分库分表操作。而MyBatis是一个优秀的持久层框架,与数据库之间的关系映射由它负责。Spring Boot是一个快速开发框架,可以简化Java应用程序的配置和部署。 在Spring Boot中,可以使用YAML(又称为YML)文件来进行配置。YAML是一种人类可读的数据序列化格式,与JSON类似,但语法更加简洁。使用YAML配置文件,可以将各种配置信息以键值对的形式存储在一个文件中。 当使用sharing-jdbcMyBatis和Spring Boot一起使用时,我们需要在YAML配置文件中进行相应的配置。首先,需要配置数据库连接信息,包括数据库URL、用户名和密码等。其次,需要配置MyBatis的相关信息,如Mapper的路径、扫描的包等。最后,还需要配置sharing-jdbc的相关信息,包括分库分表的策略、数据库的数据源等。 下面是一个示例的YAML配置文件: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 mybatis: mapper-locations: classpath:mapper/*.xml sharing-jdbc: data-sources: ds_0: jdbc-url: jdbc:mysql://localhost:3306/db_0?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 ds_1: jdbc-url: jdbc:mysql://localhost:3306/db_1?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 sharding-rule-config-file: classpath:sharding-jdbc.yml ``` 在这个示例中,我们配置了一个主数据库(test)和两个分库(db_0和db_1)。分别使用了不同的数据源(ds_0和ds_1)进行连接。同时,我们还指定了MyBatis的Mapper文件路径和sharing-jdbc的分库分表策略文件路径。 通过这样的配置,我们可以在Spring Boot应用中方便地使用sharing-jdbcMyBatis来实现数据库的分库分表操作。这种配置方式简洁明了,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟0917

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值