1、导入必要的jar包:

2、spring配置文件增加如下配置:

<!-- Hibernate工具栏配置-->

<bean id="miniDaoHiberCommonDao"

class="org.jeecgframework.minidao.hibernate.dao.impl.GenericBaseCommonDao">

<property name="sessionFactory">

<ref bean="sessionFactory"/>

</property>

</bean>

<!-- MiniDao动态代理类 -->

<bean id="miniDaoHandler"class="org.jeecgframework.minidao.aop.MiniDaoHandler">

<property name="jdbcTemplate" ref="jdbcTemplate"></property>

</bean>

<!-- 注册MiniDao接口,配置该bean,在web容器启动时会扫描指定包下的含有@MiniDao注解的接口类,在使用到接口类的方法时会通过动态代理的方式来调用指定方法 -->

<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">

<property name="packagesToScan">

<list>

<value>examples.dao.*</value>

</list>

</property>

</bean>

 

3、编写数据接口层接口类(该类需增加@MiniDao注解才会被MiniDao所识别)的方式有3种:在其接口方法上增加@Arguments注解或@Sql注解,或者该类继承MiniDaoSupportHiber<T>类的方式来告诉MiniDao的动态代理类需要以哪种方式来进行数据库的交互。

1)@Arguments:如果使用该注解则需要增加对应的sql文件,文件名为“接口名_方法名.sql”,该文件的存放位置与接口类所在的包同级,包名为sql,该注解的数量与sql文件的数量相同,如果有多个参数用逗号分隔,参数名称应与sql文件内的一致,在sql文件中使用参数时应在参数前加“:”(冒号),如果该参数为实体类,则通过“.”(英文状态下的点)导航其属性,该sql文件支持freemarker的语法。

2)@Sql:如果使用该注解则直接在该注解类写sql代码,如果有参数则sql语句的写法与@Arguments方式的sql文件写法相同。

3)继承MiniDaoSupportHiber<T>类:可直接调用该父类的方法。

 

示例:

接口和SQL文件对应目录

接口定义[EmployeeDao.java]

@MiniDao

public interface EmployeeDao{

@Arguments("employee")

public List<Map>getAllEmployees(Employee employee);

@Arguments("empno")

Employee getEmployee(String empno);

@Arguments({"empno","name"})

Map getMap(String empno,String name);

@Sql("SELECT count(*) FROMemployee")

Integer getCount();

@Arguments("employee")

int update(Employee employee);

@Arguments("employee")

void insert(Employee employee);

}

SQL文件[EmployeeDao_getAllEmployees.sql]

SELECT * FROM employee where1=1

<#if employee.age?exists>

and age = :employee.age

</#if>

<#if employee.name?exists>

and name = :employee.name

</#if>

<#if employee.empno?exists>

and empno = :employee.empno

</#if>

MiniDao接口配置

<!-- 注册MiniDao接口 -->

<beanclass="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">

<propertyname="packagesToScan">

<list>

<value>examples.dao.*</value>

</list>

</property>

</bean>

测试代码

public class Client {

public static voidmain(String args[]) {

BeanFactory factory = newClassPathXmlApplicationContext(

"applicationContext.xml");

EmployeeDao employeeDao = (EmployeeDao)factory.getBean("employeeDao");

Employee employee = new Employee();

List<Map> list =  employeeDao.getAllEmployees(employee);

for(Map mp:list){

System.out.println(mp.get("id"));

System.out.println(mp.get("name"));

System.out.println(mp.get("empno"));

System.out.println(mp.get("age"));

System.out.println(mp.get("birthday"));

System.out.println(mp.get("salary"));

}

}

}

接口定义[JeecgDemoDao.java]

@MiniDao

public interface JeecgDemoDaoextendsMiniDaoSupportHiber<JeecgDemo>{

@Sql("SELECT count(*)FROM jeecg_demo")

Integer getCount();

}

MiniDao接口配置

<!-- 注册MiniDao接口 -->

<beanclass="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">

<propertyname="packagesToScan">

<list>

<value>examples.dao.*</value>

</list>

</property>

</bean>

测试代码

public class Client {

public static voidmain(String args[]) {

BeanFactory factory = newClassPathXmlApplicationContext(

"applicationContext.xml");

JeecgDemoDaojeecgDemoDao = (JeecgDemoDao) factory.getBean("jeecgDemoDao");

jeecgDemoDao.getCount();

JeecgDemo s =jeecgDemoDao.getByIdHiber(JeecgDemo.class,"402880e7408f53a401408f53a5aa0000");

if(s!=null){

System.out.println(s.getUserName());

}

}

}

MiniDao普通项目集成方案的更多相关文章

  1. vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇2】

    项目搭建时间:2020-06-29 本章节:讲述基于vue/cli, 项目的基础搭建. 本主题讲述了: 1.跨域配置 2.axios请求封装 3.eslint配置 4.环境dev,test,pro(开 ...

  2. Jmeter+Ant+Jenkins持续集成方案改进

    关于Jmeter+Ant+Jenkins如何搭建持续集成环境,网上资料一大把,就不多说了,本文主要谈一下期间的问题及扩展该持续集成方案. 其实核心的流程不复杂,Jenkins管理构建项目,Ant配置脚 ...

  3. iOS-Cordova集成开发,已有项目集成cordova

    iOS-Cordova集成开发,已有项目集成cordova 项目组准备开发一个APP,要求Android和iOS端页面完全一致,除了一个页面跟业务相关的不同,其他界面基本一致,因此,萌生一个想法,关于 ...

  4. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

    http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...

  5. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...

  6. 日志服务与SIEM(如Splunk)集成方案实战

    背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规.审计.与其他相关日志能够导入到您的安全运维中心(SOC)中. 名词解释 LOG( ...

  7. JYadmin-react-antd react+antd封装的优秀后台模板集成方案("^1.0.0")

    版本:[ "JYadmin-react-antd": "^1.0.0"] 版权所有:微信公众号[微新悦] 原文链接:https://www.weixinyue. ...

  8. 现有iOS项目集成React Native过程记录

    在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...

  9. Spring+Struts集成(方案一)

    SSH框架是现在非常流行的框架之一,本文接下来主要来对Spring和Struts的集成进行展示. 集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象. 集 ...

随机推荐

  1. vb.net加密解密方法

    1.vb.net加密解密方法 Private Function getLicenseDate() As String Dim b() As Byte Dim path As String = Serv ...

  2. apktool更新,JDK升级配置

    最近使用apktool反编译apk中的xml文件总是失败. Exception in thread "main" brut.androlib.AndrolibException: ...

  3. 1034. Head of a Gang (30)

    分析: 考察并查集,注意中间合并时的时间的合并和人数的合并. #include <iostream> #include <stdio.h> #include <algor ...

  4. Silverlight C1.Silverlight.FlexGrid 表格动态列

    很多时候,我们对于表格展示的数据,需要根据条件不停的变化,这就需要表格列能动态生成,即没有Model的概念(万物始于无形).先上主要代码: 一.根据参数绑定列定义 二.根据数据动态创建数据对象,并添加 ...

  5. nop 添加字段

    一.Libraries 1.core 层------------实体字段 2.data-Map----------映射到数据库 二.Admin 1.Models  --------admin界面模型  ...

  6. CoreLocation框架的使用---定位,求两地距离

    前言: 在iOS开发中,有关导航,周边的开发,必须基于2个框架: Map Kit :用于地图展示 Core Location :用于地理定位   用户隐私的保护 从iOS 6开始,苹果在保护用户隐私方 ...

  7. js脚本放置位置

    若是display:none:则元素height.width为0:但去了display:none后,恢复原来大小,所以操作元素应该在去除display:none后.

  8. centos 安装flash插件

    方法一: 1.选择合适的yum源http://get.adobe.com/cn/flashplayer/进入此网址选择 “YUM,适用于Linux(YUM)”,下载adobe源http://101.9 ...

  9. 还在花钱搞开发?猿团YTFCloud,零基础照样做专业APP

    近日,猿团科技再推新品:YTFCloud.这是一套一体化的云端解决方案,用户可以通过平台提供的各类解决方案,一键创建应用,也就是说,YTFCloud实现了APP的DIY自制,用户无需懂得编程,零基础制 ...

  10. 如何优化cocos2d程序的内存使用和程序大小:第一部分

    译者: 在我完成第一个游戏项目的时候,我深切地意识到“使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰”.而我刚开始接触cocos2d的时候,社区里面的人们讨论了一个 ...