- 浏览: 111777 次
- 来自: ...
文章分类
最新评论
-
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 975IBatisNET从名字就可以看出,他是从Java的IBati ... -
IBatisNet系列二-QuickStart篇
2006-03-25 14:59 935本节我参考官方网站上的Quick Start Guide,网址 ... -
IBatisNet系列-执行存储过程
2006-03-25 15:24 1120映射xml文件书写如下 <?xml version=& ... -
IBatis.Net系列-Mapped Statements的语法
2006-03-29 15:25 852语法:<statement id="state ... -
Castle- Startable Facility 简单理解
2006-03-30 17:56 840最近在研究Castle开源项目,就下午学习Startable ... -
IBatis.Net系列-多参数的SQL语句的配置
2006-04-15 12:15 1416由于本人对IBatis.Net的并不是很精通,也是在边学边工作 ... -
MonoRail学习-介绍篇
2006-04-24 10:22 721刚刚结束了使用Castle MonoRail的一个项目,所以想 ... -
MonoRail学习-入门实例篇
2006-04-24 11:51 1267MonoRail学习目录实例代码下载:/Files/maply ... -
MonoRails学习- Layouts
2006-04-24 12:14 789MonoRail学习目录实例代码:/Files/maplye/ ... -
MonoRail学习-Component
2006-04-24 13:30 690MonoRail学习目录在我们asp.net中,经常有界面代码 ... -
Which Style of Workflow When?[转]
2006-05-24 16:58 718http://blogs.msdn.com/davegreen ... -
WF in Asp.Net
2006-05-26 11:19 935这几天在研究Windows Workflow Foundati ... -
WF学习-Console Workflow Application
2006-05-26 16:51 887环境必备:.NET Framework 2.0VS.Net 2 ... -
WF学习-WorkFLow中的参数
2006-05-27 15:46 1114系统和WorkFlow交互有很多种方式,今天介绍的是通过Wor ... -
Castle ActiveRecord.chm
2006-05-31 18:06 720收集 TerryLee's Tech Space 和 SHY5 ... -
使用UserControl时,在Page中定义方式
2006-06-24 10:02 875我们通常,会将一些通用的页面模块作成用户控件,然后加载到页面中 ... -
ASP.Net2.0中自定义控件在page中的注册
2006-06-24 14:15 784今天在网上看到ASP.Net 2.0中注册自定义控件的好方法, ... -
Asp.Net中NHiernate的Session的管理
2006-06-26 11:08 642NHibernate中的Session,在我的理解似乎就相当于 ... -
GridView使用一些记录
2006-06-30 10:45 908现在有个项目开始使用ASP.NET 2.0开发,在开发过程中关 ... -
NHibernate中使用generator为assigned的问题
2006-07-04 14:03 1826Hibernate version: 1.0.2.0 Mapp ...
相关推荐
mybatis generator 自定义注释,生成modle,mapper,xml 自定义生成字段注释。直接放在D盘下面,可以直接生成。支持中文表字段注释,全表自动生成。
MyBatis Generator自定义插件实现自定义Mapper,方便代码复用。
自定义mybatis-generator自动生成controller、service、serviceImpl、dao、entity、mapperXml文件
自定义注释的mybatis-generator-core-1.3.6.jar, 可以生成带表字段注释的实体类
1 如果不改直接使用,把其中.class 文件放到自己jar包所在配置位置找到 mybatis-generator-core.1.xx.xx.jar 用压缩工具打开 plugins 目录中 如果自己想改,可以.java 放在自己项目中,编辑好,再使用编译好的对应的...
mybatis-generator 1.3.5 源码+改进+支持自定义文件后缀+表、字段注释 mybatis-generator 1.3.5 源码+改进+支持自定义文件后缀+表、字段注释
hibernate中的generator的生成方式 hibernate中的generator的生成方式
找了很久的东西,mybatis+freemake自定义生成代码器,原来的代码生成器只能生成mapper,service,model感觉没多大用,自定义模板真的节约的好多时间
springboot项目 mybatis generator 生成自定义 注释(maven项目 打包被 其他项目引用的demo)
利用mybatis的generator,可以生成mapper.xml 和mapper.java
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
一个用Java 编写简单的自定义ID 生成器IDGenerator
如果是eclipse工具,直接生成的,则替换:plugins/org.mybatis.generator.core_1.3.2*****.jar,如果是其他方式则直接替换掉官方的mybatis-generator-core1.3.2.jar即可
form-generator表单设计器api文档,用于设计自定义组件
MyBatisPlus自带了一个代码生成器mybatis-plus-generator,可基于数据库库表,结合模板技术,自动生成程序源码,不过默认情况下,只支持Entity、Mapper、Service、Controller这些层次。如果想生成未预置的代码,如vo...
mybatis generator 自定义plugins,实现生成的实体类添加自定义的注解
1:将原有实体类生成的英文注释修改为数据库中的中文注释 2:将原有生成的Dao接口和Mapper.xml文件后面的Mapper更改为Dao;如:UserMapper.java 修改为:UserDao.java;UserMapper.xml修改为UserDao.xml; 3:生成的...
eclipse 插件,使用MyBatis Generator 可自动生成数据库对应的bean(有中文注释),mapper.xml和mapper dao 接口文件,可直接使用查询数据库,此插件在eclipse mars.2 版本下亲测可用,
mybatis-comment-generator简介这是用于 中生成注释这一步骤的自定义生成器,默认将数据库注释作为 Java 注释,并支持在生成的 Java 代码中附加注解示例<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ...