精华内容
下载资源
问答
  • dao层框架

    2008-08-07 09:08:00
    贴的出处:http://www.blogjava.net/dreamstone/category/24598.html
    展开全文
  • 框架 DataBase对数据库的JDBC的连接进行的封装,大大简化了对dao层的开发效率,用本框架只需注解(配置servlet都是可选可不选的),附上了使用文档,希望能与大家学习交流
  • DAO层框架介绍:gavin

    千次阅读 2018-08-04 11:28:15
    一个标签代表一个事务,事务必须在同一个SQLTrans标签中完成 一个里面写多条sql语句进行数据库操作,也可以返回多个结果值 5.service调用方式: Request query=Request.build("TemplatesService", "queryPage")....

    源码:https://gitee.com/l311576/gavin

    特性:

    1.支持分表分库

    2.支持读写分离

    3.加载一次可以系统在任意地方调用事务

     

    简单的使用方式:

    1.配置数据库连接信息,可以配置n个,读写分开配置

        <DataGroup Id="readTemplates" ClassPath="com.gavin.plugin.database.DataEngine" Driver="com.mysql.jdbc.Driver">
            <Database URI="jdbc:mysql://127.0.0.1:3306/Templates?Unicode=true&amp;characterEncoding=utf8" LoadLevel="100" KeyIV="DECSECURITYKEYABCDEFG|EiJPWIgQQDgoJXlRy91SZncpdZgwQEHi">    
                <User UserName="root" Password="root"/>
                <ConnectionPool>
                    <MinConnectionCount>1</MinConnectionCount>
                    <MaxConnectionCount>5</MaxConnectionCount>
                </ConnectionPool>
            </Database>
        </DataGroup>
        
        <DataGroup Id="writeTemplates" ClassPath="com.gavin.plugin.database.DataEngine" Driver="com.mysql.jdbc.Driver">
            <Database URI="jdbc:mysql://127.0.0.1:3306/Templates?Unicode=true&amp;characterEncoding=utf8" LoadLevel="100" KeyIV="DECSECURITYKEYABCDEFG|EiJPWIgQQDgoJXlRy91SZncpdZgwQEHi">
                <User UserName="root" Password=""/>
                <ConnectionPool>
                    <MinConnectionCount>1</MinConnectionCount>
                    <MaxConnectionCount>5</MaxConnectionCount>
                </ConnectionPool>
            </Database>
        </DataGroup>    

     

    2.配置分表分库规则,可以配置多个表

        <Sharding Resource="templates/sharding.xml" Encoding="utf-8"/>

    <?xml version="1.0" encoding="UTF-8"?>
    <TableRule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="DataService.xsd" Id="write">
    <!-- 表名  数据库标识   单库表数量  (哈希或)容量        库数量 总表数量,不填默认10000表 -->
    <BigTable Name="templatesRecord" GroupId="writeTemplates" GroupTableCount="10" GroupTableCapacity="1" GroupCount="5" HashedIdCount="50"/>

    <BigTable Name="tradeDetail" GroupId="writeTemplates" GroupTableCount="100" GroupTableCapacity="1" GroupCount="100" />
    </TableRule>

    3.配置事务插件路径,可以配置多个,适用于分模块开发互不影响

        <Plugin Resource="user/plugin.xml" Encoding="utf-8"/>
        <Plugin Resource="pay/plugin.xml" Encoding="utf-8"/>

     

    4.编写事务逻辑,如下:查询分页  传值(pageNumber,pageSize)

        <SQLTrans TransName="queryPage" TransFlag="0" DataGroupId="readTemplates">
            <SelectRecordSet OutputId="{list}">
                <OutputSQL>select * from {TI:tbTemplatesRecord, strUserName} limit {startIndex},{pageSize}</OutputSQL>
            </SelectRecordSet>
            
            <!--判断第一条数据的金额是否等于100,是则打印日志-->
            <If Value1="{list[0].lMoney}" Type="Long" Operator="=" Value2="100">
                <Then>
                    <Log Text="金额等于100" Level="info"/>
                </Then>
            </If>
            <SelectField OutputId="{totalCount}">
                <OutputSQL>select count(*) from  {TI:tbTemplatesRecord, strUserName}</OutputSQL>
            </SelectField>
            <OnException>
                <Return Info="TemplatesService.xml.query.Error.{userId}:异常" Code="-1" Text="数据库异常"></Return>
            </OnException>        
            <Return Info="查询信息成功" Code="0" Text="查询信息成功" >
                <ReturnItem FieldId="{totalCount}" ValueId="{totalCount}"/>
                <ReturnItem FieldId="{list}" ValueId="{list}"/>
            </Return>
        </SQLTrans>

        注意:
            一个<SQLTrans>标签代表一个事务,事务必须在同一个SQLTrans标签中完成
            一个<SQLTrans>里面写多条sql语句进行数据库操作,也可以返回多个结果值

    5.service层调用方式:

       Request query=Request.build("TemplatesService", "queryPage").page(0, 10).set("type", username).set("strUserName", username);
            Page<Datas> datas=DBTrans.page(query,Datas.class);
            if(datas==null){//查询失败
                
            }

    从上面的步骤可以看出一个完整的事务,需要步骤4和步骤5

     

    6.通过事务标签属性实现读写分离:

        写:<SQLTrans TransName="insert" TransFlag="1" DataGroupId="writeTemplates" BigTableGroupId="write">    
        读:<SQLTrans TransName="query" TransFlag="0" DataGroupId="readTemplates" BigTableGroupId="read">    

    7.通过表达式实现分表分库,目前有两种方式

        ai:按指定字段数值顺序分表分库
        TI:按指定字段哈希值分表分库
        <OutputSQL>select * from {TI:tbTemplatesRecord, strUserName} limit {startIndex},{pageSize}</OutputSQL>

     

    8.在项目任意地方可调用事务,通过DBTrans操作数据库的方式主要有4种,分别为:
     

         插件启动方式:
        DBTrans.getInstance().config("templates/config.properties").start();    

        8.1.查询一条数据并使用Respones对象返回
            DBTrans.beanResult(Request,Class<?>);
        8.2.查询分页信息(需要返回:totalCount和list),如果查询失败或异常则返回null
            DBTrans.page(Request,Class<?>);
        8.3.查询list集合(需要返回:list),如果查询失败或异常则返回null
            DBTrans.list(Request,Class<?>);
        8.4.查询一个对象,如果查询失败或异常则直接报错RuntimeException()
            DBTrans.bean(Request,Class<?>);
        8.5.执行数据库事务(这是一个万能方法,可以执行上面所有的操作并且可以有多个返回值)
            DBTrans.execute(Request);    

    <<终>>

     

     

     

    展开全文
  • Dao层框架 之 Mybatis

    2015-10-31 21:42:13
    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。 未完,待续。。。

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。



    未完,待续。。。

    展开全文
  • Hibernate是一个开放源代码的对象关系映射框架,对JDBC访问数据库进行了轻量级的封装,减少数据访问的代码。将POJO与数据库表建立映射关系,是一个全自动的orm框架。支持很多关系性数据,从以到多到多各种映射。不...

           Hibernate是一个开放源代码的对象关系映射框架,对JDBC访问数据库进行了轻量级的封装,减少数据访问层的代码。将POJO与数据库表建立映射关系,是一个全自动的orm框架。支持很多关系性数据,从以到多到多各种映射。不需要写sql语句,直接用对象对数据库进行操作。

     Hibernate的工作原理:(1)读取并解析配置文件;(2)读取并解析映射我呢间,创建SessionFactory;(3)打开Session;(4)创建事务Transation;(5)持久化操作;(6)提交事务;(7)关闭Session;(8)关闭SessionFactory

     Hibernate的特点:(1)对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码;(2)Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它在很大程度的简化了DAO层的编码工作;(3)hibernate使用Java反射机制,而不是字节码增强程序实现透明性;(4)hibernate的性能非常好,因为hibernate是轻量级框架,映射的灵活性很出色,支持各种关系性数据库,从一对一到多对多的各种复杂关系。

     Hibernate的延迟加载:(1)Hibernate2延迟加载实现:a.实体对象;b.集合(Collection);    (2)Hibernate3提供了属性的延迟加载功能。当Hibernate在查询数据的时候,数据并没有存在于内存中,当程序真正对数据操作时,对象才存在于内存中,就实现延迟加载,节省了服务器的内存开销,从而提高了服务器的性能。

     Hibernate中实现类之间的关系(如:一对多、多对多关系):类与类直接的关系主要体现在表与表之间的关系进行操作,他们都是对对象进行操作,在程序中把所有的表和类都映射在一起,通过配置文件的many-to-one、one-to-many、many-to-many。

     Hibernate中的几种查询数据方式:hql查询、sql查询、条件查询。、

     load( )和get( )的区别:hibernate对于load( )方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundException;load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load之后查询一级缓存,不存在则创建代理)。get( )先在一级缓存查找,没有就去二级缓存找,没有就去数据库找,没有就返回null:而对于get方法,hibernate一定获取到真实的数据,否则就返回null。



    展开全文
  • 本篇文章将用到前几篇文章介绍过的知识自定义数据访问层框架,建议看这篇文章之前先去了解JDBC元数据和反射。   如果是初学者,觉得JDBC封装数据太麻烦,一个类十多个字段,重复的代码导致浪费了大量时间,那待会...
  • 后台管理页面大多都是各种表格,大多数情况下呈现的数据是多表关联后的结果,这种SQL语句一般是需要单独写的,使用数据库的view,可以将这种查询SQL语句也自动生成(各种dao层框架,现在基本上都有自动生成CRUD...
  • SSM是sping+springMVC+mybatis集成的框架。 MVC即model view controller。 model=entity。存放我们的实体类,与数据库中的属性值基本保持一致。 service。存放业务逻辑处理,也是一些关于数据库处理的操作...
  • Spring boot 三层框架dao层、service层、controller层+实体model层model层dao层service层controller层 首先创建一个springboot项目。 model层 model层也叫pojo层或者entity层,个人比较喜欢pojo层。 一般数据库的...
  • 文章目录model层dao层service层controller层 model层 model层即数据库实体层,也被称为entity层,pojo层。 一般将数据库一张表对应一个实体类,类属性同表字段一一对应。 dao层 dao层即数据持久层,也被称为...
  • **1.Dao层:**全称Data Access Object。Dao层比较底层,负责与数据库打交道具体到对某个表、某个实体的增删改查 **2.Service层:**又叫服务层或业务层,封装Dao层的操作,使一个方法对外表现为实现一种功能,例如:...
  • MVC框架DAO层,Service层与Controller层

    千次阅读 2020-12-27 17:28:13
    MVC框架即模型-视图-控制器(model-View-controller) M即model模型是指模型表示业务规则,V即View视图是指...DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的
  • Spring Boot框架model层、dao层、service层、controller层分析设计 model层 model层即数据库实体层,也被称为entity层,pojo层。 一般数据库一张表对应一个实体类,类属性同表字段一一对应。 dao层 dao层即数据持久...
  • model层dao层service层controller层 model层 model层即数据库实体层,也被称为entity层,pojo层。一般数据库一张表对应一个实体类,类属性同表字段一一对应。 dao层 dao层即数据持久层,也被称为mapper层。d....
  • SSM是sping+springMVC+mybatis集成的框架。 MVC即model view controller。 model=entity。存放我们的实体类,与数据库中的属性值基本保持一致。 service。存放业务逻辑处理,也是一些关于数据库处理的操作...
  • swiftdao 基于SSH框架DAO层包,不用自己写DAO层,包含API和PDF教程 还包含了swiftdao必须的SSH包, 可以反编译改成自己需要的, 很不错的DAO层,里面提供了常用的增删改查的方法, 注明:基于spring和hibernate...
  • 2. 自定义持久(dao)框架 更新案例:(insert/update/delete) 1. 加载驱动 2. 获取连接 3. 创建pstmt对象 4. 执行sql: pstmt.executeUpdate(); 5. 关闭   查询:(select) 1. 加载驱动 2. 获取...
  • dao层叫做数据访问层,全称为data access object,属于一种比较底层基础得操作,具体到对某个表得增删改查,换句话说,某个dao一定是和数据库中的某一张表一一对应的,而且其中也只是封装了增删改查得方法。...
  • spring的dao层框架
  • Dao层负责持久化类。(与数据库打交道,比如增删改查) 结合了SSH框架来说。Model层就是对应的数据库表的实体类。Dao层是使用了hibernate连接数据库、操作数据库(增删改查)。Service层就是引用对应的Dao数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,591
精华内容 3,036
关键字:

dao层框架