通用dao的demo

代码片段

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

时间: 2024-10-06 00:11:04

通用dao的demo的相关文章

JDBC数据库通用DAO

包括DAO.连接池.事务控制.  连接池用的是 BoneCP.  BoneCP运行时需要slf4j和guava的支持. 当然也可以随意换成其他的连接池. dao的vo是用结果转换器控制的,需要继承ResultConverter. 这招是和spring的jdbcTemplete学的 日志组件用的是slf4j,需要的可自行更换其他日志组件. demo的在 http://www.oschina.net/code/snippet_86510_4466末尾有源码和试例包下载 [1].[代码] 数据库连接池

Hibernate 通用DAO类

1.通用接口类 package org.lzpeng.dao; import java.io.Serializable; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Criterion; import org.springside.modules.orm.hibernate.Page; /**  *   * @ver

SSH系列:(7)编写通用Dao

因为这里写的是通用Dao功能,因此将它放置到core包里面. 1.定义通用Dao中的方法 BaseDao.java package com.rk.core.dao; import java.io.Serializable; import java.util.List; public interface BaseDao<T> { void save(T entity); void update(T entity); void delete(Serializable id); T findById

通用DAO之MyBatis封装,封装通用的增删改查(二)

曾经发过一篇文章,大概写的就是阿海多么多么厉害,见到某位同事在Hibernate的基础上封装了一下,就以一己之力开发什么什么框架,最后写了个超大的一坨的事. 那么,后续篇来了.阿海不是自负之人,当之前的CRUD框架并没有达到理想的结果时,阿海转向了Mybatis封装.别问我为什么不是Hibernate.我本来就不喜欢Hibernate,即使在之前的一家公司一直被强制性的约束使用Hibernate时,也没有对Hibernate产生什么真正的好感,反而屡次发现了Hibernate的一些问题. 或许是

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

使用通用dao和通用service可以减少代码的开发.可以将常用的增删改查放到通用dao中.对不同的or框架,基本上都有自己的实现如SpringJPA的Repository就提供了常用的增删改查方法.而MyBatis借助代码生成工具也可以生成常用方法的映射 这里只针对Mybatis.如果使用代码生成工具,会有一个问题:每个Mapper里面都有一些方法(增晒改查).维护起来的话还好.只是在写service的时候会有一个问题.比如UserMapper里面有 insert(User user) , f

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

有时候在一个项目中会连接多个数据库,须要在spring中配置多个数据源,近期就遇到了这个问题,因为我的项目之前是基于通用Dao的,配置的时候问题不断.这样的方式和资源文件冲突:扫描映射文件的话,SqlSessionFactory的bean名字必须是sqlSessionFactory 他读不到sqlSessioNFactory2或者其它名字,终于解决方法例如以下: 1.在项目中增加例如以下类MultipleDataSource.java package com.etoak.util; import

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

@NoRepositoryBean:Spring Data Jpa在启动时就不会去实例化BaseRepository这个接口 1.通用接口: import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.repository.N

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

spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种方式和资源文件冲突:扫描映射文件的话,SqlSessionFactory的bean名字必须是sqlSessionFactory 他读不到sqlSessioNFactory2或者其他名字,最终解决方法如下: 1.在项目中加入如下类MultipleDataSource.java ? 1 2 3 4 5

wemall app商城源码Android之通用通知接口demo

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Native(原生)支付模式一demo,供技术员参考学习. wemall官网地址:http://www.wemallshop.com 支付完成后,微信会把相关支付和用户信息发送到商户设定的通知URL,商户接收回调信息后,根据需要设定相应的处理流程. 这里举例使用log文件形式记录回调信息. notify_url.php <?php includ