代码片段

1. [代码]整型映射工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package org.dave.common.database.convert;
 
import java.sql.ResultSet;
import java.sql.SQLException;
 
/**
 * 整型映射工具
 * @author David Day
 */
public class IntegerConverter implements ResultConverter<Integer> {
 
    @Override
    public Integer convert(ResultSet rs) throws SQLException {
        return rs.getInt(1);
    }
 
}

2. [代码]长整型映射工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package org.dave.common.database.convert;
 
import java.sql.ResultSet;
import java.sql.SQLException;
 
/**
 * 长整型映射工具
 * @author 戴威
 */
public class LongConverter implements ResultConverter<Long> {
 
    @Override
    public Long convert(ResultSet rs) throws SQLException {
        return rs.getLong(1);
    }
 
}

3. [代码]数据模型的demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package org.dave.demo.model;
 
import org.dave.common.database.DataModel;
 
@SuppressWarnings("serial")
public class Demo extends DataModel {
     
    private Long id;
     
    private String name;
     
    private String pass;
     
    private String email;
 
    public Demo() {
        super();
    }
 
    public Demo(Long id) {
        super();
        this.id = id;
    }
 
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPass() {
        return pass;
    }
 
    public void setPass(String pass) {
        this.pass = pass;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
}

4. [代码]demo数据模型转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package org.dave.demo.convert;
 
import java.sql.ResultSet;
import java.sql.SQLException;
 
import org.dave.common.database.convert.ResultConverter;
import org.dave.demo.model.Demo;
 
public class DemoConverter implements ResultConverter<Demo> {
 
    @Override
    public Demo convert(ResultSet rs) throws SQLException {
        Demo demo = new Demo(rs.getLong(1));
        demo.setName(rs.getString(2));
        demo.setPass(rs.getString(3));
        demo.setEmail(rs.getString(4));
        return demo;
    }
 
}

5. [代码]dao的demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package org.dave.demo.dao;
 
import java.sql.Connection;
import java.util.List;
 
import org.dave.common.database.access.DataAccess;
import org.dave.common.database.convert.IntegerConverter;
import org.dave.common.database.convert.LongConverter;
import org.dave.demo.convert.DemoConverter;
import org.dave.demo.model.Demo;
 
public class DemoDao extends DataAccess {
     
    public DemoDao(Connection conn) {
        super(conn);
    }
     
    /**
     * 增加
     * @param name
     * @param pass
     * @param email
     * @return
     */
    public Long add(String name, String pass, String email) {
        return super.insert("INSERT INTO demo(name,pass,email) values(?,?,?)",
                new LongConverter(), name, pass, email);
    }
     
    /**
     * 修改
     * @param id
     * @param name
     * @param pass
     * @param email
     */
    public void update(Long id, String name, String pass, String email) {
        super.update("UPDATE demo SET name=?,pass=?,email=? WHERE id=?",
                name, pass, email, id);
    }
     
    /**
     * 删除
     * @param id
     */
    public void delete(Long id) {
        super.update("DELETE FROM demo WHERE id=?", id);
    }
     
    /**
     * 根据ID查询
     * @param id
     * @return
     */
    public Demo findById(Long id) {
        return super.queryForObject("SELECT id,name,pass,email FROM demo WHERE id=?",
                new DemoConverter(), id);
    }
     
    /**
     * 查询所有
     * @return
     */
    public List<Demo> findAll() {
        return super.queryForList("SELECT id,name,pass,email FROM demo", new DemoConverter());
    }
     
    /**
     * 查询总记录数
     * @return
     */
    public Integer getCount() {
        return super.queryForObject("SELECT COUNT(*) FROM demo", new IntegerConverter());
    }
     
    /**
     * 分页查询
     * @param start
     * @param size
     * @return
     */
    public List<Demo> findByRange(int start, int size) {
        return super.queryForList("SELECT id,name,pass,email FROM demo limit ?,?",
                new DemoConverter(), start, size);
    }
 
}

6. [代码]基础service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package org.dave.common;
 
import java.sql.Connection;
 
import org.dave.common.database.DatabaseTransaction;
 
public abstract class BaseService {
     
    private DatabaseTransaction trans;
     
    protected BaseService(DatabaseTransaction trans) {
        this.trans = trans;
    }
     
    protected BaseService() { }
 
    protected DatabaseTransaction getTransaction() {
        return trans;
    }
     
    protected Connection getConnection() {
        return trans.getConnection();
    }
 
}

7. [代码]service的demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package org.dave.demo.service;
 
import java.util.List;
 
import org.dave.common.BaseService;
import org.dave.common.data.Pager;
import org.dave.common.database.DatabaseTransaction;
import org.dave.demo.dao.DemoDao;
import org.dave.demo.model.Demo;
 
public class DemoService extends BaseService {
 
    public DemoService(DatabaseTransaction trans) {
        super(trans);
    }
 
    public DemoService() {
        super();
    }
     
    /**
     * 增加
     * @param demo
     * @return
     */
    public Demo add(Demo demo) {
        DemoDao dao = new DemoDao(getConnection());
        Long id = dao.add(demo.getName(), demo.getPass(), demo.getEmail());
        return dao.findById(id);
    }
     
    /**
     * 更新
     * @param demo
     */
    public void update(Demo demo) {
        new DemoDao(getConnection()).update(demo.getId(), demo.getName(), demo.getPass(), demo.getEmail());
    }
     
    /**
     * 删除
     * @param id
     */
    public void delete(Long id) {
        new DemoDao(getConnection()).delete(id);
    }
     
    /**
     * 通过id查询
     * @param id
     * @return
     */
    public Demo findById(Long id) {
        return new DemoDao(getConnection()).findById(id);
    }
     
    /**
     * 查询所有
     * @return
     */
    public List<Demo> findAll() {
        return new DemoDao(getConnection()).findAll();
    }
     
    /**
     * 分页查询
     * @param page
     * @return
     */
    public List<Demo> findByPage(Pager page) {
        DemoDao dao = new DemoDao(getConnection());
        page.setTotalResults(dao.getCount());
        return dao.findByRange(page.getStartResults(), page.getPageSize());
    }
     
}

8. [代码]action的demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package org.dave.demo.action;
 
import java.util.List;
 
import org.dave.common.data.Pager;
import org.dave.common.database.DatabaseTransaction;
import org.dave.demo.model.Demo;
import org.dave.demo.service.DemoService;
 
public class DemoAction {
     
    public String add() {
        DatabaseTransaction trans = new DatabaseTransaction(true);
        try {
            new DemoService(trans).add(demo);
            trans.commit();
        } catch (Exception e) {
            trans.rollback();
            return "error";
        } finally {
            trans.close();
        }
        return "toList";
    }
     
    public String update() {
        DatabaseTransaction trans = new DatabaseTransaction(true);
        try {
            new DemoService(trans).update(demo);
            trans.commit();
        } catch (Exception e) {
            trans.rollback();
            return "error";
        } finally {
            trans.close();
        }
        return "toList";
    }
     
    public String info() {
        DatabaseTransaction trans = new DatabaseTransaction(true);
        try {
            demo = new DemoService(trans).findById(demo.getId());
        } catch (Exception e) {
            return "error";
        } finally {
            trans.close();
        }
        return "info";
    }
     
    public String findByPage() {
        DatabaseTransaction trans = new DatabaseTransaction(true);
        try {
            demoList = new DemoService(trans).findByPage(page);
        } catch (Exception e) {
            return "error";
        } finally {
            trans.close();
        }
        return "page";
    }
     
    public String findAll() {
        DatabaseTransaction trans = new DatabaseTransaction(true);
        try {
            demoList = new DemoService(trans).findAll();
        } catch (Exception e) {
            return "error";
        } finally {
            trans.close();
        }
        return "list";
    }
     
    private Pager page;
     
    private Demo demo;
     
    private List<Demo> demoList;
 
    public Pager getPage() {
        return page;
    }
 
    public void setPage(Pager page) {
        this.page = page;
    }
 
    public Demo getDemo() {
        return demo;
    }
 
    public void setDemo(Demo demo) {
        this.demo = demo;
    }
 
    public List<Demo> getDemoList() {
        return demoList;
    }
 
}

9. [文件] 源码和试例包 ~ 13KB     下载(556)

http://www.oschina.net/code/snippet_86510_4466

通用dao的demo的更多相关文章

  1. Java学习笔记之使用反射+泛型构建通用DAO

    PS:最近简单的学了学后台Servlet+JSP.也就只能学到这里了.没那么多精力去学SSH了,毕竟Android还有很多东西都没学完.. 学习内容: 1.如何使用反射+泛型构建通用DAO. 1.使用 ...

  2. 使用mybatis完成通用dao和通用service

    使用mybatis完成通用dao和通用service 概述: 使用通用dao和通用service可以减少代码的开发.可以将常用的增删改查放到通用dao中.对不同的or框架,基本上都有自己的实现如Spr ...

  3. Java反射结合JDBC写的一个通用DAO

    以前写反射只是用在了与设计模式的结合上,并没有考虑到反射可以与DAO结合.也是一个偶然的机会,被正在上培训的老师点到这个问题,才考虑到这个可能性,于是上网参考各种代码,然后自己动手开发了一个通用DAO ...

  4. Spring Boot-------JPA——EntityManager构建通用DAO

    EntityManager EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满 ...

  5. spring基于通用Dao的多数据源配置详解【ds1】

    spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...

  6. Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x

    Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x ============================== 蕃薯耀 2018年 ...

  7. 十六、springboot整合Spring-data-jpa(二)之通用DAO接口与添加自定义方法

    @NoRepositoryBean:Spring Data Jpa在启动时就不会去实例化BaseRepository这个接口 1.通用接口: import org.springframework.da ...

  8. spring基于通用Dao的多数据源配置

    有时候在一个项目中会连接多个数据库,须要在spring中配置多个数据源,近期就遇到了这个问题,因为我的项目之前是基于通用Dao的,配置的时候问题不断.这样的方式和资源文件冲突:扫描映射文件的话,Sql ...

  9. Mybatis 使用PageHelper封装通用Dao分页方法

    参考: PageHelper官网:https://pagehelper.github.io/docs/howtouse/#3-%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BB%A3% ...

随机推荐

  1. 安装树莓派实验的Pi 仪表盘

    1.简介 树莓派仪表盘网址:Pi Dashboard (Pi 仪表盘) - MAKER 趣无尽  http://maker.quwj.com/project/10 Pi Dashboard (Pi 仪 ...

  2. 【原】Jenkins pipeline中资料总结

    docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images https://www.cnbl ...

  3. POJ 2559 Largest Rectangle in a Histogram(单调栈) && 单调栈

    嗯... 题目链接:http://poj.org/problem?id=2559 一.单调栈: 1.性质: 单调栈是一种特殊的栈,特殊之处在于栈内的元素都保持一个单调性,可能为单调递增,也可能为单调递 ...

  4. 【Android多线程】异步任务AsyncTask类

    https://www.bilibili.com/video/av65170691?p=9 (本文为此视频观看笔记) 一.为什么需要此类 Handler繁琐 二.理解AsyncTask 2.1 参数( ...

  5. 「NOI2006」最大获利

    「NOI2006」最大获利 传送门 最小割. 对于每一组用户群 \(A_i, B_i, C_i\) ,连边 $S \to A_i, S \to B_i, $ 容量为成本,还有 \(i \to T\) ...

  6. ha-wordy-Write-up

    信息收集 下载地址:点我 bilibili:点我 ➜ ~ nmap -sn 192.168.116.1/24 Starting Nmap 7.80 ( https://nmap.org ) at 20 ...

  7. Oracle Parallel使用方法

    一. 并行查询 并行查询允许将一个sql select语句划分为多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果,多用于全表扫描,索引全扫描等,大表的扫描和连接. ...

  8. 杭电2024 C语言合法标识符

    链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2024 开始真的对这题是一点头绪都没有,简直了.然后事实证明是我想多了,这题主要是把概念给弄清楚 ...

  9. c++拷贝构造函数(翁恺c++公开课[26-27]学习笔记)

    这节课在p26.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...

  10. HDU 5570:balls 期望。。。。。。。。。。。。。。。

    balls  Accepts: 19  Submissions: 55  Time Limit: 6000/3000 MS (Java/Others)  Memory Limit: 65536/655 ...