计划概述
偶然候我们不必要太重的持久层,就像要一个最简的、轻量的持久层,便于维护和扩展,代码掌握在本身手里,那么我们可以基于springboot的自动配置,快速的构建一个本身的持久层轻量框架,不说废话,直接上代码,可以根据本身的必要扩展
类图
工程结构
代码说明
DbUtils.java
这个类是一个工具类,实现了 ApplicationContextAware 接口,用于获取 Spring 应用上下文。它提供了一系列静态方法,用于实行插入、更新、删除和查询操作。这些方法支持两种参数范例:可变参数数组和 Map。
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
- import org.springframework.stereotype.Component;
- import java.util.List;
- import java.util.Map;
- @Component
- public class DbUtils implements ApplicationContextAware {
- private static ApplicationContext context;
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- context = applicationContext;
- }
- private static JdbcTemplate getJdbcTemplate() {
- return context.getBean(JdbcTemplate.class);
- }
- private static NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
- return new NamedParameterJdbcTemplate(getJdbcTemplate());
- }
- // 插入数据
- public static void insert(String sql, Object... args) {
- getJdbcTemplate().update(sql, args);
- }
- // 更新数据
- public static void update(String sql, Object... args) {
- getJdbcTemplate().update(sql, args);
- }
- // 删除数据
- public static void delete(String sql, Object... args) {
- getJdbcTemplate().update(sql, args);
- }
- // 查询单个对象
- public static <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) {
- return getJdbcTemplate().queryForObject(sql, rowMapper, args);
- }
- // 查询多个对象
- public static <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) {
- return getJdbcTemplate().query(sql, rowMapper, args);
- }
- // 插入数据
- public static void insert(String sql, Map<String, Object> params) {
- getNamedParameterJdbcTemplate().update(sql, params);
- }
- // 更新数据
- public static void update(String sql, Map<String, Object> params) {
- getNamedParameterJdbcTemplate().update(sql, params);
- }
- // 删除数据
- public static void delete(String sql, Map<String, Object> params) {
- getNamedParameterJdbcTemplate().update(sql, params);
- }
- // 查询单个对象
- public static Map<String, Object> queryForObject(String sql, Map<String, Object> params) {
- return getNamedParameterJdbcTemplate().queryForMap(sql, params);
- }
- // 查询多个对象
- public static List<Map<String, Object>> query(String sql, Map<String, Object> params) {
- return getNamedParameterJdbcTemplate().queryForList(sql, params);
- }
- }
复制代码
- getJdbcTemplate() 和 getNamedParameterJdbcTemplate() 方法用于获取 JdbcTemplate 和 NamedParameterJdbcTemplate 实例。
- insert, update, delete 方法用于实行相应的数据库操作。
- queryForObject 和 query 方法用于查询单个对象和多个对象。
sql 子文件夹
SqlBuilder.java
这是一个抽象类,用于构建 SQL 语句。它包罗一个 StringBuilder 对象,用于拼接 SQL 语句的各个部分。
- // ... existing code ...
- protected void append(String part) {
- sql.append(part);
- }
- // ... existing code ...
复制代码
- append 方法用于直接拼接字符串。
- appendWithSpace 方法用于在拼接字符串之前添加一个空格。
- build 方法是一个抽象方法,由子类实现,用于返回最终的 SQL 语句。
SelectBuilder.java
这个类继承自 SqlBuilder,用于构建 SELECT 语句。
- // ... existing code ...
- public SelectBuilder columns(String... columns) {
- appendWithSpace(String.join(", ", columns));
- return this;
- }
- // ... existing code ...
复制代码
- columns 方法用于指定要查询的列。
- from 方法用于指定查询的表。
- where, and, or 方法用于添加查询条件。
- limit 方法用于限制查询效果的数量。
InsertBuilder.java
这个类继承自 SqlBuilder,用于构建 INSERT 语句。
- // ... existing code ...
- public InsertBuilder columns(String... columns) {
- appendWithSpace("(");
- appendWithSpace(String.join(", ", columns));
- append(")");
- return this;
- }
- // ... existing code ...
复制代码
- columns 方法用于指定要插入的列。
- values 方法用于指定要插入的值。支持 List 和 Map 两种参数范例。
UpdateBuilder.java
这个类继承自 SqlBuilder,用于构建 UPDATE 语句。
- // ... existing code ...
- public UpdateBuilder set(Map<String, Object> updates) {
- appendWithSpace("SET");
- appendWithSpace(updates.keySet().stream()
- .map(key -> key + " = ?")
- .collect(joining(", ")));
- return this;
- }
- // ... existing code ...
复制代码
- set 方法用于指定要更新的列和值。
- where, and, or 方法用于添加更新条件。
DeleteBuilder.java
这个类继承自 SqlBuilder,用于构建 DELETE 语句。
- // ... existing code ...
- public DeleteBuilder where(String condition) {
- appendWithSpace("WHERE");
- appendWithSpace(condition);
- return this;
- }
- // ... existing code ...
复制代码
- where, and, or 方法用于添加删除条件。
完整工程链接(无需积分直接下)
最简持久层工具类
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |