基于JdbcTemplate的一种通用数据库操作帮助工具
来源:互联网 发布:手机淘宝卖家中心网址 编辑:程序博客网 时间:2024/05/17 06:32
工具介绍
基于JdbcTemplate的通用操作数据库的帮助工具,借助阿里巴巴的开源工具fastjson实现实体的转json字符串以及params的解析。
用法
1.建立与数据库表相对应的entity对象。
package cn.flyzy2005.sample.entity;import com.alibaba.fastjson.JSON;/** * Created by Fly on 2017/5/4. */public class Book { private int id; private String name; private String author; private String publisher; public Book() { } public Book(int id, String name, String author, String publisher) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } @Override public String toString() { return JSON.toJSONString(this); }}
成员变量的命名与数据库列名一致(大小写无所谓),例如列名ID可以对应ID、id、Id、iD。
重写toString()方法,将实体转为json格式的字符串,这里借助阿里巴巴的fastjson来实现这一功能。
2.为每张表建立Dao操作类继承AbstractDao,并设置表名。
package cn.flyzy2005.sample.dao;import cn.flyzy2005.dao.AbstractDao;import cn.flyzy2005.sample.entity.Book;import org.springframework.stereotype.Repository;/** * Created by Fly on 2017/5/4. */@Repositorypublic class BookDao extends AbstractDao<Book>{ public BookDao(){ setTableName("book"); }}
AbstracDao实现的数据库操作包括:
public interface IBaseDao<T> { /** * 根据id进行查询 * @param id id * @return entity实例 */ T findById(Object id); /** *根据条件条件进行查询 * @param jsonObject 查询条件{"name":"fly"} * @return 所有满足条件的entity实例 */ List<T> findByParams(JSONObject jsonObject); /** * 查询表中所有数据 * @return 所有entity实例 */ List<T> findAll(); /** * 根据sql语句进行查询 * @param sql sql语句 * @return 满足查询条件的entity实例 */ List<T> findBySql(String sql); /** * 添加一条记录 * @param model entity实例 * @param withId 是否需要插入Id * @return 是否插入成功 */ boolean add(T model, boolean withId); /** * 添加多条记录 * @param modelList entity实例的List * @param withId 是否需要插入Id * @return 是否全部删除成功 */ boolean addList(List<T> modelList, boolean withId); /** * 根据Id删除一条记录 * @param model entity实例 * @return 是否删除成功 */ boolean delete(T model); /** * 根据Id删除一条记录 * @param id Id * @return 是否删除成功 */ boolean deleteById(Object id); /** * 根据条件删除一条记录 * @param jsonObject 删除条件 * @return 是否删除成功 */ boolean deleteByParams(JSONObject jsonObject); /** * 修改一条记录,会根据传入的entity的Id进行匹配修改 * @param model 修改的entity实例 * @return 是否修改成功 */ boolean modify(T model); /** * 根据条件修改一条记录 * @param model 修改的entity实例 * @param jsonObject 条件 * @return 是否修改成功 */ boolean modifyByParams(T model, JSONObject jsonObject); /** * 根据sql修改一条数据 * @param sql sql语句 * @return 是否修改成功 */ boolean modifyBySql(String sql);}
3.在spring的配置文件替换JdbcTmplate,使得queryForObject查询结果为0时,返回0而不是抛出异常。(也可以自己处理)
<!--<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">--> <!--<property name="dataSource" ref="dataSource"></property>--><!--</bean>--><bean id="jdbcTemplate" class="cn.flyzy2005.jdbc.DaoUtilJdbcTemplate"> <property name="dataSource" ref="dataSource"/></bean>
DaoUtilJdbcTemplate:
public class DaoUtilJdbcTemplate extends JdbcTemplate { @Override public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException { List<T> results = query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper, 1)); return requiredSingleResult(results); } private <T> T requiredSingleResult(Collection<T> results) throws IncorrectResultSizeDataAccessException { int size = (results != null ? results.size() : 0); if (size == 0) { return null; } if (results.size() > 1) { throw new IncorrectResultSizeDataAccessException(1, size); } return results.iterator().next(); }}
引用:
<dependency> <groupId>cn.flyzy2005</groupId> <artifactId>daoutil</artifactId> <version>1.0.0</version></dependency>
源码及样例程序地址:
github:daoutil
1 0
- 基于JdbcTemplate的一种通用数据库操作帮助工具
- Spring基于jdbcTemplate对数据库的操作
- 一个操作数据库通用帮助类
- jdbcTemplate操作数据库的DDL语句
- JdbcTemplate以对象的方式操作数据库
- 使用Spring 内置的JdbcTemplate操作数据库
- jdbcTemplate 对数据库的一些操作
- spring jdbctemplate 实现数据库的查询操作
- spring4 -- JdbcTemplate数据库操作
- jdbcTemplate操作数据库
- 获取jdbctemplate的一种方法
- 基于JdbcTemplate的批量插入操作的讨论
- 基于ORMLite封装的数据库操作工具类
- Spring使用JdbcTemplate操作数据库
- Spring使用JdbcTemplate操作数据库
- Spring JdbcTemplate实现数据库操作
- 十八、使用JdbcTemplate操作数据库
- JdbcTemplate 对mysql数据库操作
- string转换为int型。
- Golang 学习之路六:函数
- 线性表的顺序存储与实现
- 分库降低了单点机器的负载;分表,提高了数据操作的效率
- 常用正则表达式
- 基于JdbcTemplate的一种通用数据库操作帮助工具
- softmax,softmax-loss,BP的解释
- 大屏拼接处理器
- 安卓h5混合开发照片上传的问题
- 剑指offer------两个链表的第一个公共节点
- LeetCode 3. Longest Substring Without Repeating Characters
- spring中InitializingBean接口使用理解
- 1.2.ARM裸机第二部分-ARM体系结构与汇编指令
- JavaScript对象---Date