淘宝店铺网站策划wordpress网站专题
淘宝店铺网站策划,wordpress网站专题,中信建设有限责任公司官方网站,住房和城乡建设部网站监理合同前言#xff1a;常用的ORM框架有哪些 JdbcTemplate
JdbcTemplate 是Spring框架提供的一个JDBC抽象库#xff0c;旨在简化传统的JDBC操作#xff0c;避免了繁琐的JDBC代码和数据库资源的手动处理。通过JdbcTemplate#xff0c;开发者可以更加专注于业务逻辑而不是数据库的连… 前言常用的ORM框架有哪些 JdbcTemplate
JdbcTemplate 是Spring框架提供的一个JDBC抽象库旨在简化传统的JDBC操作避免了繁琐的JDBC代码和数据库资源的手动处理。通过JdbcTemplate开发者可以更加专注于业务逻辑而不是数据库的连接管理和资源释放。
核心特点
简化数据库交互自动处理连接的开启和关闭减少了重复的数据库连接代码。异常处理提供了一个统一的异常处理机制将SQL异常转换为DataAccessException方便异常管理。灵活的查询和更新操作支持直接执行SQL查询和更新操作以及调用存储过程。回调机制通过RowMapper和ResultSetExtractor等回调接口可以将数据库结果集映射到Java对象或集合。
使用场景适用于需要直接使用SQL进行数据操作的场景特别是在需要细粒度控制SQL执行和结果映射时。
Spring Data JPA
Spring Data JPA 是对JPAJava Persistence API的进一步封装和整合目的是简化JPA的使用和提高开发效率。Spring Data JPA通过提供repository抽象层使得数据库操作更加简单。
核心特点
简化数据访问层DAO代码通过扩展JpaRepository接口自动实现了一系列标准的数据访问方法如保存、删除、查询等。查询方法名解析支持通过解析方法名自动生成查询无需编写查询语句。查询注解通过Query注解可以自定义JPQLJava Persistence Query Language或原生SQL查询。事务管理整合了Spring的声明式事务管理。
使用场景适用于JPA项目特别是对于域驱动设计DDD和需要快速开发的应用程序。
MyBatis
MyBatis 是一个半ORM对象关系映射框架提供了对象与数据库之间的映射同时保留了编写原生SQL的能力。它避免了JDBC代码的繁琐和手动设置参数、获取结果集的过程同时提供了更多的控制权和灵活性。
核心特点
灵活的SQL编写支持完全的SQL编写使得开发者可以利用数据库的特性如窗口函数、CTE公用表表达式等。动态SQL支持动态SQL语句的构建根据条件拼接不同的SQL片段。映射器MapperXML文件通过XML文件或注解定义SQL语句和映射规则。延迟加载支持关联对象的延迟加载。
使用场景适用于那些需要高度控制SQL语句或数据库设计复杂、需要优化数据库查询性能的项目。 本文重点学会三种方式的CRUD操作 第一步引入pom依赖
!-- MySQL 驱动 --
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId
/dependency
!-- Spring Boot Starter for Data JPA --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId
/dependency
!-- Spring Boot Starter for JdbcTemplate --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId
/dependency
!-- MyBatis Spring Boot Starter --
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.4/version
/dependency第二步配置数据库属性
spring.datasource.urljdbc:mysql://xxxx:3306/nextJava?useSSLfalseserverTimezoneUTC
spring.datasource.usernameroot
spring.datasource.password123456# JPA特有配置
spring.jpa.hibernate.ddl-autoupdate
spring.jpa.show-sqltrue# MyBatis特有配置
mybatis.mapper-locationsclasspath:mappers/*.xml
第三步代码实现
使用JdbcTemplate
Repository
public class UserRepository {Autowiredprivate JdbcTemplate jdbcTemplate;// 增public int save(User user) {return jdbcTemplate.update(INSERT INTO user(name, email) VALUES(?, ?),user.getName(), user.getEmail());}// 删public int deleteById(Long id) {return jdbcTemplate.update(DELETE FROM user WHERE id ?, id);}// 改public int update(User user) {return jdbcTemplate.update(UPDATE user SET name ?, email ? WHERE id ?,user.getName(), user.getEmail(), user.getId());}// 查public User findById(Long id) {return jdbcTemplate.queryForObject(SELECT * FROM user WHERE id ?,new Object[]{id},(rs, rowNum) -new User(rs.getLong(id),rs.getString(name),rs.getString(email)));}
}
2、使用Spring Data JPA
Entity
public class User {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;private String name;private String email;// Constructors, Getters and Setters
}
使用Spring Data JPA只需要定义接口继承JpaRepository即可自动拥有增删改查功能
public interface UserRepository extends JpaRepositoryUser, Long {
}
3、使用Mybatis
在src/main/resources/mappers目录下创建MyBatis的映射文件UserMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.UserMapperinsert idsave parameterTypecom.example.model.UserINSERT INTO user(name, email) VALUES(#{name}, #{email})/insertdelete iddeleteById parameterTypelongDELETE FROM user WHERE id #{id}/deleteupdate idupdate parameterTypecom.example.model.UserUPDATE user SET name #{name}, email #{email} WHERE id #{id}/updateselect idfindById parameterTypelong resultTypecom.example.model.UserSELECT * FROM user WHERE id #{id}/select
/mapper
以及Mapper类
Mapper
public interface UserMapper {void save(User user);void deleteById(Long id);void update(User user);User findById(Long id);
}
对应表创建语句为
CREATE TABLE IF NOT EXISTS User (id BIGINT(20) NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL,PRIMARY KEY (id),UNIQUE KEY email_unique (email)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci; 结束语 无论是使用JdbcTemplate来直接操作数据库还是利用Spring Data JPA和MyBatis这样的ORM框架来简化数据持久层的开发Spring Boot都以其约定优于配置的理念让开发者能够集中精力于业务逻辑的实现而不是纠结于繁琐的配置和底层实现细节。下一节我们来学习一下事务管理
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89755.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!