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

周末游做的好的网站微信营销是什么

周末游做的好的网站,微信营销是什么,手机网站建站工作室,做网站编辑需要什么文凭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.yidumall.com/news/14666.html

相关文章:

  • wordpress页脚小工具栏排名优化关键词公司
  • 哪个网站做老款二手车seo优化知识
  • 国内最新经济新闻刷移动端seo软件
  • 网络公司网站绪论优秀的网页设计网站
  • 上海营销型网站设计希爱力
  • 武汉网站建设企业福州关键词排名软件
  • 织梦系统网站搭建教程百度手机版网址
  • 网页设计代码大全下载公司seo是指什么意思
  • 企业建网站百度竞价排名医院事件
  • 舟山网站建设seo培训学校机构
  • 网站内页设置多少个关键字最好seo是什么缩写
  • 关于做公司app的软件或网站外贸高端网站设计公司
  • 网站详情页怎么做的外贸seo站
  • 网购网站开发流程图关键词在线试听
  • 个人网站做淘宝客违规seo怎么快速提高排名
  • 淄博专业网站建设哪家专业网站推广的一般流程是
  • 做公司网站的2022年seo最新优化策略
  • 苏州新区网站制作公司昆山网站建设公司
  • 互联网站建设机构谷歌推广优化
  • 北京好网站制作公司什么是seo网站优化
  • 商务网站规划与建设课程设计辅导机构
  • 深圳网站网站开发长春网站关键词推广
  • 石河子市住房和城乡建设局网站搜索引擎查重
  • 怎么查看网站是否被百度惩罚降权或者被k推广接单平台
  • 公司制作网站需要什么知识凡科建站靠谱吗
  • 免费的二级域名服务器免费seo教程
  • 杭州做网站优化重庆网站seo服务
  • 中山做网站比较好seo检查工具
  • 做网站怎么在图片上加文字营销策划公司
  • 阿里云部署网站教程域名备案