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

苏州网站制作出名 乐云践新网站会员后台

苏州网站制作出名 乐云践新,网站会员后台,哈尔滨市建设工程信息,做机械的老板都看什么网站目录 一、ORM框架 二、MyBatis与Hibernate 1、 概念与设计理念 2、SQL 控制 3、学习成本 4、开发效率 三、MyBatisAPI 1、SqlSessionFactoryBuilder 2、SqlSessionFactory 3、SqlSession 四、MyBatis配置 1、核心依赖与日志依赖 2、建立.XML映射文件 3、建立映射…

目录

一、ORM框架 

二、MyBatis与Hibernate

1、 概念与设计理念

2、SQL 控制

3、学习成本

4、开发效率

三、MyBatisAPI 

1、SqlSessionFactoryBuilder

2、SqlSessionFactory

3、SqlSession

四、MyBatis配置

1、核心依赖与日志依赖

2、建立.XML映射文件

3、建立映射接口文件

4、数据源特性文件

5、框架配置文件

6、封装MyBatisUtil


一、ORM框架 

我们先来了解以下什么时ORM,下图就是一个很直观的展示了ORM之间的关系。 

         ORM框架就是对JDBC进行封装的持久层框架,在实体类对象(POJO对象)与SQL之间通过配置映射文件建立映射关系,将SQL所需的参数及返回的结果字段映射到相应的实体类中。

二、MyBatis与Hibernate

        MyBatis的官方文档:MyBatis中文网

        MyBatis和Hiberbate都是非常流行的ORM框架,前者对JDBC提供了较为完整的封装,后者主要是对实体类对象与SQL之间的映射关系。

1、 概念与设计理念

        MyBatis:作为半自动化的持久化框架,MyBatis 需要开发者手动编写 SQL 语句,对 SQL 有很强的控制能力,更适合对 SQL 性能有较高要求、数据库表结构复杂多变的项目。

        Hibernate:属于全自动化的持久化框架,通过对象关系映射(ORM)技术,开发者无需编写 SQL,只需操作对象即可完成数据库操作,能提高开发效率,适用于快速开发和数据库表结构相对稳定的项目。

2、SQL 控制

        MyBatis:支持开发者编写自定义的 SQL 语句,因此可以对 SQL 进行精细优化,能够处理复杂的查询和业务逻辑。

        Hibernate:自动生成 SQL 语句,虽然方便快捷,但对于复杂的查询,自动生成的 SQL 可能不够优化,而且难以进行深度的定制。

3、学习成本

        MyBatis:由于需要手动编写 SQL,开发者需要具备一定的 SQL 基础和数据库知识,学习成本相对较高。

        Hibernate:无需编写 SQL,只需掌握 ORM 的基本概念和框架的使用方法,学习成本相对较低。

4、开发效率

        MyBatis:手动编写 SQL 会增加开发时间和工作量,尤其是在处理大量的增删改查操作时,但对于复杂业务逻辑,能更灵活地满足需求。

        Hibernate:自动生成 SQL,减少了开发工作量,提高了开发效率,尤其适合快速迭代的项目

三、MyBatisAPI 

1、SqlSessionFactoryBuilder

        此 API 用于构建SqlSessionFactory实例。它能从不同来源(如 XML 配置文件、Java 代码)读取配置信息,进而创建SqlSessionFactory。通常在应用启动时使用一次,创建出的SqlSessionFactory会被复用。

2、SqlSessionFactory

        这是 MyBatis 的核心对象之一,是线程安全的。其作用是创建SqlSession实例,在整个应用中一般只需一个SqlSessionFactory实例。

3、SqlSession

        代表与数据库的一次会话,是非线程安全的,要在一次请求中使用并及时关闭。它提供了执行 SQL 语句、管理事务等功能,包含selectOneselectListinsertupdatedeletecommitrollback等常用方法。

注:在使用SqlSession的方法insert()/delete()/update()时,必须使用事务提交方法commit()。

四、MyBatis配置

实例项目结构

mybatis-demo
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           ├── entity
│   │   │           │   └── User.java
│   │   │           ├── mapper
│   │   │           │   └── UserMapper.java
│   │   │           ├── util
│   │   │           │   └── MyBatisUtil.java
│   │   │           └── Main.java
│   │   └── resources
│   │       ├── db.properties
│   │       ├── mybatis-config.xml
│   │       └── com
│   │           └── example
│   │               └── mapper
│   │                   └── UserMapper.xml
└── pom.xml

1、核心依赖与日志依赖

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>mybatis-project</artifactId><version>1.0-SNAPSHOT</version><dependencies><!-- MyBatis 核心依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!-- MySQL 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!-- SLF4J 和 Logback 日志依赖 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>

2、建立.XML映射文件

UserMapper.xml

<?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="com.example.mapper.UserMapper"><!-- 根据 ID 查询用户 --><select id="getUserById" parameterType="int" resultType="com.example.entity.User">SELECT * FROM users WHERE id = #{id}</select><!-- 查询所有用户 --><select id="getAllUsers" resultType="com.example.entity.User">SELECT * FROM users</select><!-- 插入用户 --><insert id="insertUser" parameterType="com.example.entity.User">INSERT INTO users (name, age) VALUES (#{name}, #{age})</insert><!-- 更新用户 --><update id="updateUser" parameterType="com.example.entity.User">UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUser" parameterType="int">DELETE FROM users WHERE id = #{id}</delete></mapper> 

3、建立映射接口文件

UserMapper.java

package com.example;import java.util.List;// 此接口对应 XML 映射文件中的 SQL 操作
public interface UserMapper {/*** 查询所有用户* @return 用户列表*/List<User> getAllUsers();/*** 根据 ID 查询用户* @param id 用户 ID* @return 用户对象*/User getUserById(int id);/*** 插入用户* @param user 用户对象*/void insertUser(User user);/*** 更新用户信息* @param user 用户对象*/void updateUser(User user);/*** 根据 ID 删除用户* @param id 用户 ID*/void deleteUser(int id);
}    

4、数据源特性文件

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/DBname?characterEncoding=UTF-8
jdbc.username=root // 根据数据库实际用户名更改
jdbc.password=123456 // 根据数据库实际密码更改

可能这里和书上不一样,这里加了jdbc.*但书上没有,这个具体呢要看你的properties中怎么读取的,如果如下图一样就要加

那什么时候不要加呢,如下图

5、框架配置文件

mybatis-config.xml

<?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><!-- 引入数据源特性文件 --><properties resource="db.properties"/><!-- 环境配置 --><environments default="development"><environment id="development"><!-- 事务管理器类型 --><transactionManager type="JDBC"/><!-- 数据源类型 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!-- 映射器配置 --><mappers><!-- 引入映射文件 --><mapper resource="UserMapper.xml"/></mappers>
</configuration>    

6、封装MyBatisUtil

MyBatisUtil.java

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class MyBatisUtil {// 定义静态的 SqlSessionFactory 对象private static SqlSessionFactory sqlSessionFactory;// 静态代码块,在类加载时执行,用于初始化 SqlSessionFactorystatic {try {// 加载 MyBatis 配置文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 创建 SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}/*** 获取 SqlSession 对象* @return SqlSession 对象*/public static SqlSession getSqlSession() {// 从 SqlSessionFactory 中获取 SqlSession 对象return sqlSessionFactory.openSession();}public static void closeSqlSession(SqlSession session){if(session!=null){session.close();}}
}    

http://www.dtcms.com/wzjs/547831.html

相关文章:

  • 台州永建建设有限公司网站营销网站的例子
  • 加强网站的建设孝感网站开发优搏好
  • 货运代理东莞网站建设做网站专题的效果
  • 网站开发的初始密码网站建设 平面设计合同
  • 大秦wordpress微信支付sem和seo是什么职位
  • 网站开发过程模型宿州网站建设多少钱
  • o2o电子商务网站策划书做网站可以用python么
  • 做pc端网站多少钱公司网站建设发展趋势
  • 建设网站专栏网站推广行业
  • 有没有什么网站专门帮人做问卷百度贴吧网页版入口
  • 评测网站做的那些条形图外国一些做环保袋的网站
  • 扬中网站建设开发个人做动漫资源网站
  • 专业做食材网站济南效果图制作公司
  • 网站收费板块怎么做个性化wordpress
  • 企业网站建设开发注意事项湖北省建设信息网官网
  • 网站制作app排行榜前十名珠海建站软件
  • 中山网站设计安卓软件app
  • 集团网站建设招标网站建设方案模版
  • 游艇网站建设方案建设银行网站个人银行上不去
  • 用自己电脑做网站空间wordpress商家目录
  • 北京建设项目管理有限公司网站程序员参与洗钱网站建设
  • 被禁止访问网站怎么办海外网站
  • 成都设计公司名字郑州搜索引擎优化公司
  • 黄金网站app视频下载小说网站突然在百度消失了
  • 软环境建设办公室网站两个公司的网站建设
  • php网站运行wordpress国外主题公园
  • 苏州网站建设kgwl代理公司注册网站
  • 太原做网站兼职游戏代理是什么
  • 购书网站开发知名小蚁人网站建设
  • 协会网站方案html网站开发心得体会