文档章节

manerger层学习___查询

noteman
 noteman
发布于 2015/11/16 09:12
字数 347
阅读 18
收藏 0

manger层主要使用的是hibernate

hibernate是jdbc的轻量级封装,可以采用面向对象的方法操作数据库,即:ORM;

  1. 查询: 


  2. 查询单个对象,直接拼接SQL,传入一个参数:
    String sql = "SELECT A FROM " + Salary.class.getName() + " A where opTime=" + opTime;
    List<Salary> salaries = searchBySql(Salary.class, sql);
//只想查询出单个对象,通过list.get(0);的方式
public BasicSalary getByUserId(Long userId) {
		if(null==userId){
			return null;
		}
		//String sql = "SELECT A FROM  " +BasicSalary.class.getName()+ " A WHERE A.userId = " + userId + " and A.status= 1" ;
		String sql = "SELECT A FROM  " + BasicSalary.class.getName() + " A WHERE A.userId = " + userId ;
		List<BasicSalary> list = searchBySql(BasicSalary.class, sql);
		if(list.size()>0){
			return list.get(0);
		}
		return null;
	}
     查询一个对象,传入多个参数:
     public String viewMonth(HttpServletRequest request,@PathVariable Long objectId){
		Salary salary=salaryManager.getByObjectId(objectId);
		request.setAttribute("salary", salary);
		return getFileBasePath()+"showMonthSalary";
	}
	
	//Salary salary=salaryManager.getByObjectId(objectId);
	
public T getByObjectId(Serializable objectId) {
	if (null == objectId) {
		return null;
		}
Class entityClass = getActualArgumentType();
StringBuilder sql = new StringBuilder();
sql.append("SELECT A FROM  ").append(entityClass.getName()).append(" A WHERE A.objectId = ?");
		List<T> list = searchBySql(entityClass, sql.toString(), new Object[] { objectId });
		if (list.size() > 0) {
			return list.get(0);
		}
		return null;
	}
     
    // List<T> list = searchBySql(entityClass, sql.toString(), new Object[] { objectId });
    
    public <A> List<A> searchBySql(Class<A> entity, String sql, Object... params) {
		Query query = getSession().createQuery(sql);
		int i = 0;
		for (Object object : params) {
			query.setParameter(i++, object);
		}
		return query.list();
	}
//查询多个对象的个别字段,而不是需要把整个对象都查出来
public Map<Long, String> queryUserDepartment(){
		Map<Long, String> userIdMap=new HashMap<Long, String>();
		
		String query2="select U.objectId,D.name from " + User.class.getName() + " as U," + Department.class.getName() + " as D "
				 + "WHERE U.departmentId = D.objectId";

		List<Object[]> result=this.getSession().createQuery(query2).list();
		
		for(Object[] obj:result){
				userIdMap.put((Long)obj[0], (String)obj[1]);
		}
		
		return userIdMap;
	}
	
	//String query2="select U.objectId,D.name from " + User.class.getName() + " as U," + Department.class.getName() + " as D "+ "WHERE U.departmentId = D.objectId";


© 著作权归作者所有

上一篇: manager学习_Update
下一篇: SpringMVC和json
noteman
粉丝 14
博文 233
码字总数 44869
作品 0
六安
私信 提问
Django 实战1:搭建属于自己社工查询系统(下)

上篇文章已经完成框架搭建,本文接着上篇的内容继续讲解。本片主要的说三点内容,分别是:根据条件查询数据、根据查询结果显示不同内容、将查询数据填充到页面上。 1 逻辑优化 在上篇文章,我...

猴哥Yuri
2018/04/15
0
0
Android FrameWork层框架

Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework,其实也是我自己的学习心得。   F...

天王盖地虎626
06/06
10
1
SIGIR2018大会最佳短论文:利用对抗学习的跨域正则化

选自arXiv,作者:Daniel Cohen等,机器之心编译。 ACM 国际信息检索研究与发展会议 SIGIR 2018 近日于美国密歇根州 Ann Arbor 举行。目前,大会已公布最佳论文等奖项,马德里自治大学(Uni...

机器之心
2018/07/16
0
0
SIGIR2018|大会最佳短论文:利用对抗学习的跨域正则化

  选自arXiv   作者:Daniel Cohen等   机器之心编译   参与:路、李泽南      ACM 国际信息检索研究与发展会议 SIGIR 2018 近日于美国密歇根州 Ann Arbor 举行。目前,大会已公...

机器之心
2018/07/13
0
0
SIGIR 2018 | 大会最佳短论文:利用对抗学习的跨域正则化

  选自arXiv   作者:Daniel Cohen等   机器之心编译   参与:路、李泽南      ACM 国际信息检索研究与发展会议 SIGIR 2018 近日于美国密歇根州 Ann Arbor 举行。目前,大会已公...

机器之心
2018/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币

原文作者:Xuejie 原文链接:https://xuejie.space/2019_09_06_introduction_to_ckb_script_programming_udt/ Nervos CKB 脚本编程简介[3]:自定义代币 CKB 的 Cell 模型和 VM 支持许多新的用...

NervosCommunity
47分钟前
4
0
通过OAuth2.0 获取授权访问SF 用户数据

通过OAuth2.0 获取授权访问SF 用户数据 OAuth2.0 相关知识 深入了解 Salesforce 中的 OAuth 2.0(SF官方) OAuth 2.0 的一个简单解释(阮一峰大神) OAuth 2.0 的四种方式(阮一峰大神) GitHub OA...

在山的那边
53分钟前
7
0
编写程序:从键盘上接受一个三位数(首先要确保是三位数),计算出各位之和输出。

#include<stdio.h> int main() { int a,sum=0; printf("请输入一个三位数:\n"); scanf("%d",&a); sum=a/100+a%100/10+a%10; printf("这三个数的和:%d",sum); return 0; }......

201905021729吴建森
今天
7
0
如何离开/退出/停用Python virtualenv

我正在使用virtualenv和virtualenvwrapper。 我可以使用workon命令在virtualenv之间切换。 me@mymachine:~$ workon env1(env1)me@mymachine:~$ workon env2(env2)me@mymachine:~$ workon e......

技术盛宴
今天
7
0
成长之路 万事坚持难

任何事情开了头,想要更好的发展下去,不忘初心,就一定要坚持下去。 以前自己坚持了一些事情,比如早睡不吃东西,由于中途断了,没有及时止损,导致又接着恶习断了几天。所以 及时的反省和调...

T型人才追梦者
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部