MyBatis基础(1)
1.什么是MyBatis?
MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。与其他ORM框架不同,MyBatis没有将Java对象与数据表关联起来,二十作为Java方法和sql语句的桥梁,我们一般称它为“半自动化ORM”框架。
2.MyBatis能做什么?
- 定制化SQL,操纵数据库对象
- 可以使用简单的xml或注解来配置和映射原生类型、接口和Java的POJO为数据库中的记录
- 动态SQL功能,更加灵活的使用SQL
- 提供了插件增强机制,可以继承其他的插件,如分页
3.与Hibernate对比
- Hibernate:全自动化ORM框架,数据库移植性好,基础业务几乎不需要写sql,易学难精,上手简单但熟练使用需要阅读大量文档,框架结构复杂。
- MyBatis:半自动化ORM框架,数据库移植性一般,基础业务仍需写sql,但是可以通过Mapper来简化,易学易用,上手简单,结构精简清晰。
对比发现 :H适合在需求明确、业务固定的项目中使用;M适合在需求多变,快速迭代的项目中使用
4.注意事项:
- MyBatis在开发中会书写大量的SQL,对于SQL关键字我们统一大写
- 在MyBatis标签中书写sql语句是可以不用在句尾加 ;的,但在其他环境还是加上
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.MyBatis的基础使用
- 得到MyBatis配置信息,Configuration类,Configuration负责MyBatis架构中的配置部分,例如:dataSource数据源信息都会交给Configuration去管理;Environment是Configuration 中的一部分,而PooledDataSource和JdbcTransactionFactory又是Environment中的一部分,他们是属于层层递进的关系。其中JdbcTransactionFactory表示事务工厂,当MyBatis 需要新建事务的时候,会通过它来新建;PooledDataSource表示数据源,通过其构造参数,我们传入了数据库url,数据库用户和密码等配置;Configuration可以有多个Environment,因此每个Environment都必须有唯一的id,即代码中的development,将这些配置搭配组合后就是一个可用的Configuration.
- 通过Configuration 来创建SqlSessionFactory,Mybatis是通过会话的方式来执行sql的,因此我们必须拥有一个会话创建器,即会话工厂。
- 新建SqlSession来执行sql。有了SqlSessionFactory之后,我们可以方便的新建会话,并通过会话来执行sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package com.gongrf; import org.apache.ibatis.datasource.pooled.PooledDataSource; import org.apache.ibatis.mapping.Environment; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @SuppressWarnings ({ "SqlResolve" , "SqlNoDataSourceInspection" , "Duplicates" }) public class StartNoXml { public static void main(String[] args) throws SQLException { // 无需xml配置的方式使用MyBatis // 准备jdbc事务类 JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory(); // 配置数据源 PooledDataSource dataSource = new PooledDataSource( "com.mysql.cj.jdbc.Driver" , "jdbc:mysql://localhost:3306/sys?useSSL=false" , "root" , "root123" ); // 配置环境,向环境中指定环境id、事务和数据源 Environment environment = new Environment.Builder( "development" ) .transactionFactory(jdbcTransactionFactory) .dataSource(dataSource).build(); // 新建 MyBatis 配置类 Configuration configuration = new Configuration(environment); // 得到 SqlSessionFactory 核心类 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); // 开始一个 sql 会话 SqlSession session = sqlSessionFactory.openSession(); // 得到 sql 连接并运行 sql 语句 PreparedStatement preStatement = session .getConnection() .prepareStatement( "SELECT * FROM user WHERE id = ?" ); preStatement.setInt( 1 , 1 ); ResultSet result = preStatement.executeQuery(); // 验证结果 while (result.next()) { System.out.println( "username: " + result.getString( "username" )); } // 关闭会话 session.close(); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~