- 浏览: 114610 次
- 来自: ...
文章分类
最新评论
-
Juanjuel:
Django多表查询 -
chenokia:
那么在\grails-app\conf 下的DataSourc ...
Grails如何使用外部配置文件 -
viking2439:
有没有方法去指定用户去获得某个权限呢?
[django]总结Django中的用户权限模块
我的这个自定义的Generator设置如下:
<generator class="HYLQ.Core.Domain.StreamGenerator, HYLQ.Core">
<param name="ObjectName">Child</param>
</generator>
这样我会为每个ObjectName都会产生一个顺序的流水号。<param name="ObjectName">Child</param>
</generator>
StreamGenerator的代码:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using NHibernate.Id;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
using NHibernate.Type;
using NHibernate.Util;
using NHibernate.Dialect;
using NHibernate.Mapping;
namespace HYLQ.Core.Domain
{
class StreamGenerator : IPersistentIdentifierGenerator, IConfigurable
{
/**//// <summary></summary>
public const string ObjectNameTarget = "ObjectName";
public const string procNameTarget = "ProcedureName";
private string objectName;
private string procName = "usp_GetID";
private long next;
private System.Type returnClass;
/**//// <summary>
///
/// </summary>
/// <param name="type"></param>
/// <param name="parms"></param>
/// <param name="d"></param>
public void Configure(IType type, IDictionary parms, Dialect d)
{
objectName = parms[ObjectNameTarget] as string;
if (parms[procNameTarget] != null)
{
procName = parms[procNameTarget] as string;
}
returnClass = type.ReturnedClass;
}
/**//// <summary>
///
/// </summary>
/// <param name="session"></param>
/// <param name="obj"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.Synchronized )]
public object Generate(ISessionImplementor session, object obj)
{
if (objectName != null)
{
getNext(session);
}
return IdentifierGeneratorFactory.CreateNumber(next, returnClass);
}
private void getNext(ISessionImplementor session)
{
SqlConnection conn = (SqlConnection)session.Factory.OpenConnection();
SqlCommand qps = conn.CreateCommand();
qps.CommandText = procName;
qps.CommandType = CommandType.StoredProcedure;
qps.Parameters.Add(new SqlParameter("@ObjectName", SqlDbType.VarChar,10));
qps.Parameters["@ObjectName"].Value = objectName;
try
{
next = int.Parse(qps.ExecuteScalar().ToString());
}
catch
{
throw;
}
finally
{
session.Factory.CloseConnection( conn );
}
}
/**//// <summary>
///
/// </summary>
/// <param name="dialect"></param>
/// <returns></returns>
public string[] SqlCreateStrings(Dialect dialect)
{
return new string[0];
}
/**//// <summary>
///
/// </summary>
/// <param name="dialect"></param>
/// <returns></returns>
public string SqlDropString(Dialect dialect)
{
return null;
}
/**//// <summary></summary>
public object GeneratorKey()
{
return objectName;
}
}
}
using System.Data;
using System.Data.SqlClient;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using NHibernate.Id;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
using NHibernate.Type;
using NHibernate.Util;
using NHibernate.Dialect;
using NHibernate.Mapping;
namespace HYLQ.Core.Domain
{
class StreamGenerator : IPersistentIdentifierGenerator, IConfigurable
{
/**//// <summary></summary>
public const string ObjectNameTarget = "ObjectName";
public const string procNameTarget = "ProcedureName";
private string objectName;
private string procName = "usp_GetID";
private long next;
private System.Type returnClass;
/**//// <summary>
///
/// </summary>
/// <param name="type"></param>
/// <param name="parms"></param>
/// <param name="d"></param>
public void Configure(IType type, IDictionary parms, Dialect d)
{
objectName = parms[ObjectNameTarget] as string;
if (parms[procNameTarget] != null)
{
procName = parms[procNameTarget] as string;
}
returnClass = type.ReturnedClass;
}
/**//// <summary>
///
/// </summary>
/// <param name="session"></param>
/// <param name="obj"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.Synchronized )]
public object Generate(ISessionImplementor session, object obj)
{
if (objectName != null)
{
getNext(session);
}
return IdentifierGeneratorFactory.CreateNumber(next, returnClass);
}
private void getNext(ISessionImplementor session)
{
SqlConnection conn = (SqlConnection)session.Factory.OpenConnection();
SqlCommand qps = conn.CreateCommand();
qps.CommandText = procName;
qps.CommandType = CommandType.StoredProcedure;
qps.Parameters.Add(new SqlParameter("@ObjectName", SqlDbType.VarChar,10));
qps.Parameters["@ObjectName"].Value = objectName;
try
{
next = int.Parse(qps.ExecuteScalar().ToString());
}
catch
{
throw;
}
finally
{
session.Factory.CloseConnection( conn );
}
}
/**//// <summary>
///
/// </summary>
/// <param name="dialect"></param>
/// <returns></returns>
public string[] SqlCreateStrings(Dialect dialect)
{
return new string[0];
}
/**//// <summary>
///
/// </summary>
/// <param name="dialect"></param>
/// <returns></returns>
public string SqlDropString(Dialect dialect)
{
return null;
}
/**//// <summary></summary>
public object GeneratorKey()
{
return objectName;
}
}
}
这里是调用一个存储过程来生成流水号的。
存储过程和表的定义如下:
--流水号
create table Stream
(
ObjectName varchar(10) not null, --对象名
MaxID int not null, --流水号
primary key(ObjectName)
)
go
--流水号发生器
if exists(select * from sysobjects where type='p' and name='usp_GetID')
drop proc usp_GetID
go
create proc usp_GetID
(
@ObjectName varchar(10) --对象名
)
as
begin
declare @MaxID int
SET NOCOUNT ON
if exists(select * from Stream where ObjectName=@ObjectName)
begin
select @MaxID=MaxID from Stream where ObjectName=@ObjectName
update Stream set MaxID=MaxID+1 where ObjectName=@ObjectName
end
else
begin
set @MaxID=1
insert into Stream values(@ObjectName,2)
end
select @MaxID as MaxID
end
go
create table Stream
(
ObjectName varchar(10) not null, --对象名
MaxID int not null, --流水号
primary key(ObjectName)
)
go
--流水号发生器
if exists(select * from sysobjects where type='p' and name='usp_GetID')
drop proc usp_GetID
go
create proc usp_GetID
(
@ObjectName varchar(10) --对象名
)
as
begin
declare @MaxID int
SET NOCOUNT ON
if exists(select * from Stream where ObjectName=@ObjectName)
begin
select @MaxID=MaxID from Stream where ObjectName=@ObjectName
update Stream set MaxID=MaxID+1 where ObjectName=@ObjectName
end
else
begin
set @MaxID=1
insert into Stream values(@ObjectName,2)
end
select @MaxID as MaxID
end
go
希望对大家能有所帮助!
发表评论
-
IBatisNet系列-介绍篇
2006-03-25 14:56 1024IBatisNET从名字就可以看出,他是从Java的IBati ... -
IBatisNet系列二-QuickStart篇
2006-03-25 14:59 972本节我参考官方网站上的Quick Start Guide,网址 ... -
IBatisNet系列-执行存储过程
2006-03-25 15:24 1171映射xml文件书写如下 <?xml version=& ... -
IBatis.Net系列-Mapped Statements的语法
2006-03-29 15:25 887语法:<statement id="state ... -
Castle- Startable Facility 简单理解
2006-03-30 17:56 876最近在研究Castle开源项目,就下午学习Startable ... -
IBatis.Net系列-多参数的SQL语句的配置
2006-04-15 12:15 1453由于本人对IBatis.Net的并不是很精通,也是在边学边工作 ... -
MonoRail学习-介绍篇
2006-04-24 10:22 750刚刚结束了使用Castle MonoRail的一个项目,所以想 ... -
MonoRail学习-入门实例篇
2006-04-24 11:51 1332MonoRail学习目录实例代码下载:/Files/maply ... -
MonoRails学习- Layouts
2006-04-24 12:14 830MonoRail学习目录实例代码:/Files/maplye/ ... -
MonoRail学习-Component
2006-04-24 13:30 740MonoRail学习目录在我们asp.net中,经常有界面代码 ... -
Which Style of Workflow When?[转]
2006-05-24 16:58 755http://blogs.msdn.com/davegreen ... -
WF in Asp.Net
2006-05-26 11:19 967这几天在研究Windows Workflow Foundati ... -
WF学习-Console Workflow Application
2006-05-26 16:51 931环境必备:.NET Framework 2.0VS.Net 2 ... -
WF学习-WorkFLow中的参数
2006-05-27 15:46 1163系统和WorkFlow交互有很多种方式,今天介绍的是通过Wor ... -
Castle ActiveRecord.chm
2006-05-31 18:06 757收集 TerryLee's Tech Space 和 SHY5 ... -
使用UserControl时,在Page中定义方式
2006-06-24 10:02 908我们通常,会将一些通用的页面模块作成用户控件,然后加载到页面中 ... -
ASP.Net2.0中自定义控件在page中的注册
2006-06-24 14:15 814今天在网上看到ASP.Net 2.0中注册自定义控件的好方法, ... -
Asp.Net中NHiernate的Session的管理
2006-06-26 11:08 672NHibernate中的Session,在我的理解似乎就相当于 ... -
GridView使用一些记录
2006-06-30 10:45 971现在有个项目开始使用ASP.NET 2.0开发,在开发过程中关 ... -
NHibernate中使用generator为assigned的问题
2006-07-04 14:03 1878Hibernate version: 1.0.2.0 Mapp ...
相关推荐
在MyBatis Generator的配置文件(如`generatorConfig.xml`)中,我们需要声明并启用自定义插件。指定插件类全名,并配置任何所需的属性。 ```xml <!-- 配置插件属性 --> ``` 4. **自定义Mapper** ...
在“mybatis generator 自定义注释生成”这个主题中,我们主要关注的是如何在生成的代码中添加自定义的注释,特别是支持中文的表字段注释。这对于后期的代码维护和团队协作至关重要,清晰的注释能帮助理解代码逻辑,...
在Java开发中,MyBatis Generator(MBG)是一个强大的工具,它能够自动化地生成MyBatis相关的代码,包括Mapper接口、Mapper XML文件、DAO实现类、Service接口及实现、Controller以及实体类等。自定义MBG可以帮助我们...
在1.3.5版本中,它已经得到了一些改进,特别是增加了对自定义文件后缀的支持以及为数据库表和字段添加注释的功能。这个压缩包包含的是MGB的源码,用户可以根据自己的需求进行定制和扩展。 MyBatis Generator的核心...
在这个"springboot集成generator自定义插件.rar"项目中,我们看到的重点是如何在Spring Boot项目中集成MyBatis Generator,并且自定义注释。这通常涉及到以下几个关键知识点: 1. **Spring Boot与MyBatis集成**:...
在本例中,我们关注的是`mybatis-generator-core-1.3.6.jar`,这是一个包含自定义注释功能的版本,能够生成带有表字段注释的实体类。这在开发过程中极大地提高了效率,因为手动编写这些注释既耗时又容易出错。 ...
在本篇文章中,我们将深入探讨MyBatis Generator的使用方法、主要功能以及如何结合MyBatis框架来提升开发效率。 一、MyBatis Generator简介 MyBatis Generator是一个基于Java的代码生成器,它能够根据数据库表结构...
1 如果不改直接使用,把其中.class 文件放到自己jar包所在配置位置找到 mybatis-generator-core.1.xx.xx.jar 用压缩工具打开 plugins 目录中 如果自己想改,可以.java 放在自己项目中,编辑好,再使用编译好的对应的...
"mybatis+freemake自定义代码生成文件CodeGenerator.zip" 提供了一个自定义代码生成器,它超越了常规的只生成Mapper、Service和Model的局限,扩展了更多的可能性。 Mybatis是一个流行的Java持久层框架,它简化了...
MyBatis Generator是一款强大的逆向工程工具,它能够根据数据库中的表自动生成对应的Java实体类、Mapper接口和XML配置文件,极大地提高了开发效率。在给定的标题中,“mybatis逆向工具generator,中文注释,Byte改...
6. **插件机制**:MyBatis Generator支持插件,开发者可以通过编写插件来扩展其功能,比如添加自定义的代码生成逻辑。 7. **版本控制**:生成的代码应纳入版本控制系统(如Git),这样团队成员可以协作开发,并确保...
在毕业设计论文中,"vue-ele-form-generator"可以作为一个实际应用案例,用于探讨前端开发中的动态表单生成技术,或者研究如何通过可视化工具提高软件开发效率。学生可以分析其架构设计,探讨组件化、模块化的实现...
- 配置Mybatis-Plus:在mybatis-plus-generator.properties或YML配置文件中指定自定义模板的位置和名称。 - 生成代码:运行代码生成器,Mybatis-Plus将根据模板生成相应的Java代码。 5. **扩展性**: Mybatis-...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
一个用Java 编写简单的自定义ID 生成器IDGenerator
3. **脚本语言**:LoadRunner使用VU Generator(VuGen)中的内置脚本语言——Vuser Language(VuScript)。VuScript类似于C语言,允许用户自定义函数和变量,进行条件判断和循环控制。 4. **参数化**:为了模拟真实...
在引入form-generator项目时,需要复制form-generator项目的components文件夹下的全部文件、uits文件夹下的所有文件以及views文件夹下全部文件到自己项目中,styles文件夹下全部文件复制到自己工程,icons文件夹下...
本文将深入探讨如何在Express中愉快地使用Generator,以实现更优雅的异步控制流。 Generator函数是JavaScript中的一个特殊函数,其特征是在函数声明前加上`function*`关键字。Generator函数可以暂停和恢复执行,...
在Java开发中,Maven、MyBatis和Generator是三个重要的工具。Maven是一个项目管理工具,用于构建、管理和依赖管理;MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射;而Generator则是MyBatis...
Msc-generator是一款用于从文本描述中绘制各种图表的工具,它的版本为6.1.0,更新于2017年11月3日。这款工具可以生成多种类型的图表,包括信号图、流程图、块图等,每种图表都有其特定的用途和特点。为了更好地理解...