代码片段

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. python查看包路径及对象的所有方法名

    进入python环境: python 输入如下代码: import sys sys.path = sys.path[:] import django print(django.__path__) 得到 ...

  2. 杭电 1114 Piggy-Bank 完全背包问题

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. Java 中序列化与反序列化引发的思考?

    java 中序列化指从对象转变为 二进制流的过程中需要进行序列化,而反序列化指二进制流转换为java 对象.那么有的时候java 存储到数据库不需要序列化, 而计算机系统本质存储的就是二进制文件,数据 ...

  4. 【原】从浏览器数据一个URL的全过程

    1.根据域名到DNS找到IP 2.根据IP建立TCP三次握手连接 3.连接成功发出http请求 4.服务器响应http请求 5.浏览器解析html代码并请求html中的静态资源(js/css) 6.关 ...

  5. C++ STL之unordered_map和unordered_set的使⽤

    写在最前面,本文摘录于柳神笔记: unordered_map 在头⽂件 #include <unordered_map> 中, unordered_set 在头⽂件 #include &l ...

  6. jqGird错误“decimalSeparator”的解决办法

    在使用jqGrid的过程中,突然出现以下错误: jquery.jqGrid.js:15016 Uncaught TypeError: Cannot read property 'decimalSepa ...

  7. 实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)

    实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例) 1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtup ...

  8. C/C++网络编程9——多进程服务器端实现

    #include <iostream> #include <unistd.h> #include <cstdlib> #include <arpa/inet. ...

  9. laravel 排除csrf验证

    中(*排除所有路由)

  10. mybatis+spring boot+vue

    参考https://www.cnblogs.com/wlovet/p/8317282.html