当前位置: 首页 > news >正文

投资者网站建设武汉久都seo

投资者网站建设,武汉久都seo,浙江商会网站建设策划方案,idc网站建设MyBatis 是一个优秀的持久层框架,它简化了 Java 应用与关系数据库之间的映射。对于大多数 Java 开发者而言,掌握 MyBatis 是必不可少的一部分。本文将详细介绍 MyBatis 的各个方面,包括其基本原理、配置、操作、动态 SQL、插件机制和高级应用…

MyBatis 是一个优秀的持久层框架,它简化了 Java 应用与关系数据库之间的映射。对于大多数 Java 开发者而言,掌握 MyBatis 是必不可少的一部分。本文将详细介绍 MyBatis 的各个方面,包括其基本原理、配置、操作、动态 SQL、插件机制和高级应用等,帮助你全面了解和熟练使用 MyBatis。

一、MyBatis 简介

1.1 什么是 MyBatis

MyBatis 是一款支持定制 SQL、存储过程以及高级映射的优秀持久层框架。它消除了几乎所有的 JDBC 代码以及手动设置参数和获取结果集的过程。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java POJO(Plain Old Java Objects)为数据库中的记录。

1.2 MyBatis 的特点

  • 灵活性高:可以使用原生的 SQL 语句,自由度高,适应复杂的 SQL 查询。
  • 易于集成:能够轻松集成到 Spring 框架等其他流行框架中。
  • 性能优异:支持高效的缓存机制。
  • 动态 SQL:支持动态 SQL 的生成。

二、MyBatis 的基本原理与架构

2.1 MyBatis 的工作原理

MyBatis 通过 SQL 映射文件或注解,将 SQL 语句和 Java 方法关联起来,并通过配置文件管理数据库连接池和事务。其核心组件包括 SqlSessionFactory、SqlSession、Mapper 等。

2.2 MyBatis 架构

  • Configuration:MyBatis 的核心配置类,包含所有配置信息。
  • SqlSessionFactory:创建 SqlSession 实例的工厂。
  • SqlSession:MyBatis 与数据库交互的主要接口,提供了执行 SQL、获取映射器等方法。
  • Mapper:MyBatis 中的数据映射接口,定义数据库操作方法。

三、MyBatis 的基本配置

3.1 配置文件

MyBatis 的配置文件一般分为主配置文件(mybatis-config.xml)和映射文件(mapper.xml)。

3.1.1 主配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>
3.1.2 映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" parameterType="int" resultType="Blog">SELECT * FROM Blog WHERE id = #{id}</select>
</mapper>

3.2 MyBatis 配置详解

  • environments:配置环境信息,可以设置多个环境(development、production等)。
  • transactionManager:事务管理器配置,通常有 JDBC 和 MANAGED 两种类型。
  • dataSource:数据源配置,常见的类型有 UNPOOLED、POOLED 和 JNDI。

四、MyBatis 的基本操作

4.1 SqlSessionFactory 的创建

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

4.2 SqlSession 的使用

try (SqlSession session = sqlSessionFactory.openSession()) {Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);System.out.println(blog);
}

4.3 Mapper 的使用

4.3.1 定义接口
public interface BlogMapper {Blog selectBlog(int id);
}
4.3.2 映射 XML 文件
<mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" parameterType="int" resultType="Blog">SELECT * FROM Blog WHERE id = #{id}</select>
</mapper>
4.3.3 调用 Mapper
try (SqlSession session = sqlSessionFactory.openSession()) {BlogMapper mapper = session.getMapper(BlogMapper.class);Blog blog = mapper.selectBlog(101);System.out.println(blog);
}

五、动态 SQL

5.1 if 标签

<select id="findActiveBlogWithTitleLike" resultType="Blog">SELECT * FROM Blog WHERE state = 'ACTIVE'<if test="title != null">AND title like #{title}</if>
</select>

5.2 choose 标签

<select id="findBlog" resultType="Blog">SELECT * FROM Blog WHERE state = 'ACTIVE'<choose><when test="title != null">AND title like #{title}</when><when test="author != null and author.name != null">AND author_name like #{author.name}</when><otherwise>AND featured = 1</otherwise></choose>
</select>

5.3 trim、where 和 set 标签

<trim prefix="WHERE" prefixOverrides="AND |OR ">...
</trim><where>...
</where><set>...
</set>

5.4 foreach 标签

<select id="selectPostIn" resultType="domain.blog.Post">SELECT * FROM Post WHERE id IN<foreach item="item" index="index" collection="list"open="(" separator="," close=")">#{item}</foreach>
</select>

六、MyBatis 插件机制

6.1 插件接口

@Intercepts({@Signature(type= Executor.class,method = "update",args = {MappedStatement.class,Object.class})})
public class ExamplePlugin implements Interceptor {public Object intercept(Invocation invocation) throws Throwable {return invocation.proceed();}public Object plugin(Object target) {return Plugin.wrap(target, this);}public void setProperties(Properties properties) {// 设置属性}
}

6.2 注册插件

<plugins><plugin interceptor="org.mybatis.example.ExamplePlugin"><property name="someProperty" value="100"/></plugin>
</plugins>

七、MyBatis 高级应用

7.1 MyBatis 与 Spring 的集成

7.1.1 配置 DataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="root"/>
</bean>
7.1.2 配置 SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:org/mybatis/example/*.xml"/>
</bean>
7.1.3 配置 MapperScannerConfigurer
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.mybatis.example"/>
</bean>

7.2 MyBatis 二级缓存

7.2.1 配置缓存
<cache eviction="LRU"flushInterval="60000"size="512"readOnly="true"/>
7.2.2 使用缓存
try (SqlSession session = sqlSessionFactory.openSession()) {BlogMapper mapper = session.getMapper(BlogMapper.class);Blog blog1 = mapper.selectBlog(101);Blog blog2 = mapper.selectBlog(101);System.out.println(blog1 == blog2); // true
}

八、总结

本文详细介绍了 MyBatis 的各个方面,从基本概念、配置、操作、动态 SQL 到插件机制和高级应用。希望通过这篇文章,你能

对 MyBatis 有一个全面而深入的了解,能够在实际项目中灵活应用 MyBatis 来处理各种复杂的数据库操作。

http://www.hkea.cn/news/173701/

相关文章:

  • 网站建设报价流程行业网站网址
  • 提供邯郸做wap网站网页推广方案
  • 网站从域名广告营销公司
  • 网站链接的常见形式免费广告网
  • 微信微网站开发教程百度大数据平台
  • 网站服务设计引流推广是什么意思
  • 学校网站建设管理办法本周新闻热点事件
  • 网站移动版怎么做网站创建公司
  • wordpress 微商城模板下载地址苏州seo推广
  • 珠海网站哪家好百度com百度一下你
  • wordpress wp.net网络优化工程师是做什么的
  • 刷会员网站怎么做外贸如何推广
  • 专做女装的网站网站备案是什么意思
  • 没有网站可以做seo排名吗小学生简短小新闻摘抄
  • 做程序网站需要什么代码宁波seo搜索排名优化
  • 网站建设开发语言新冠病毒最新消息
  • 怎么做1688网站网页制作工具有哪些
  • 一个网站的主题和设计风格最好用的免费建站平台
  • 网站开发主页手机优化游戏性能的软件
  • 怎么做属于自己的域名网站网络策划方案
  • destoon做的网站百度商务合作联系
  • 金山区网站制作网络营销策划书1500字
  • 厦门网站建设制作工具熊猫关键词挖掘工具
  • 徐州网站建设 网站推广百度首页快速排名系统
  • 在线转格式网站怎么做拼多多seo 优化软件
  • 成都理工疫情最新消息贵港seo
  • 网站如何防止攻击怎么自己做一个小程序
  • 企业网站建设英文百度收录
  • wordpress查版本sem和seo的区别
  • 网站设计说明书怎么写网站建设平台官网