`

通过sql语句拼接 和在action中写sql语句拼接完成复杂的sql语句

 
阅读更多

//根据学生的id,查找他数据库中存的导师字段‘1,2,3,4’字符串类型。可以使用in,not in 可以查找出所有对应的老师信息。用 $$

<select id="getTeacherid" parameterClass="java.lang.String" resultClass="java.lang.String">

 select teacherId from ybc_youth where id=#VALUE#

 </select>

 <select id="getTeacherAddList" parameterClass="java.lang.String" resultClass="com.fjxhx.business.people.model.TeacherModel">

select * from ybc_teacher t $wheresql$

 </select>

 <select id="getTeacherList" parameterClass="java.lang.String" resultClass="com.fjxhx.business.people.model.TeacherModel">

select * from ybc_teacher t

<dynamic prepend="where">

<isNotEmpty prepend="and">

t.id in ($teacherId$)

</isNotEmpty>

<isEmpty prepend="and">

t.id in (null)

</isEmpty>

</dynamic>

 </select>

 

Action:

	private TeacherModel model = new TeacherModel();
	public TeacherModel getModel() {
		// TODO Auto-generated method stub
		return model; //这个model可以取到页面传过来的值
	}
	//左边grid导师(未选导师)
public void getTeacherAddList(){
		
		model.setFisrtRow((model.getPage() - 1) * model.getRows());
		
		model.setLastRow(model.getRows());
		
		try {
			BaseDao dao=getDao();
			//已选导师id
			String teacherIds = (String)dao.selectObject("youth.getTeacherid",model.getId());
			
			//拼接sql  orgCode like '%$orgCode$%'
			String s;
			if(teacherIds!=null&&!teacherIds.equals("")){
			s="where t.id not in ("+teacherIds+")"+((model.getName()!=null&&!model.getName().equals(""))?" and name like '%"+model.getName():"")+((model.getName()!=null&&!model.getName().equals(""))?"%'":"")+((model.getIdentitycardId()!=null&&!model.getIdentitycardId().equals(""))?" and identitycardId="+model.getIdentitycardId():"")
					+((model.getCertificateId()!=null&&!model.getCertificateId().equals(""))?" and certificateId="+model.getCertificateId():"")+((model.getProfessionalField()!=null&&!model.getProfessionalField().equals(""))?" and professionalField="+model.getProfessionalField():""); 
			System.out.println(s);
			}else{
				s="where 1=1"+((model.getName()!=null&&!model.getName().equals(""))?" and name like '%"+model.getName():"")+((model.getName()!=null&&!model.getName().equals(""))?"%'":"")+((model.getIdentitycardId()!=null&&!model.getIdentitycardId().equals(""))?" and identitycardId="+model.getIdentitycardId():"")
				+((model.getCertificateId()!=null&&!model.getCertificateId().equals(""))?" and certificateId="+model.getCertificateId():"")+((model.getProfessionalField()!=null&&!model.getProfessionalField().equals(""))?" and professionalField="+model.getProfessionalField():""); 
			}
			model.setWheresql(s);
/*			 Map<String, Object> param = new HashMap<String, Object>();
			 param.put("pageBegin", model.getPageBegin());
			 param.put("pageEnd", model.getPageEnd());
			 param.put("wheresql", model.getWheresql());*/
			List<TeacherModel> tlist = dao.selectForList("youth.getTeacherAddList",model.getWheresql());
			
			HashMap<String ,Object> tm = new HashMap<String ,Object>();
			if(tlist.size()==0){
				tm.put("tatal", 0);
			}else{
				tm.put("total", tlist.size());
			}
			tm.put("rows", tlist);
			tm.put("success", true);
			this.doResponseWithJson(tm);
		} catch (Exception e) {
			e.printStackTrace();
			this.setData("操作失败");
			this.setSuccess(false);
			this.send();
		}
	}

	//右边grid导师(已选导师)
	public void getTeacherList(){
		
		model.setFisrtRow((model.getPage() - 1) * model.getRows());
		
		model.setLastRow(model.getRows());
		
		try {
			BaseDao dao=getDao();
			String teacherIds = (String)dao.selectObject("youth.getTeacherid", model.getId());
			System.out.println(teacherIds);

			List<TeacherModel> tlist = dao.selectForList("youth.getTeacherList", teacherIds);
			HashMap<String ,Object> tm = new HashMap<String ,Object>();
			
			if(tlist.size()==0){
				tm.put("tatal", 0);
			}else{
				tm.put("total", tlist.size());
			}
			tm.put("rows", tlist);
			tm.put("success", true);
			this.doResponseWithJson(tm);
		} catch (Exception e) {
			e.printStackTrace();
			this.setData("操作失败");
			this.setSuccess(false);
			this.send();
		}
	}

 

分享到:
评论

相关推荐

    STRUTS——SQL添加

    记录SQL添加过程中的关键信息,如操作时间、用户ID、执行的SQL语句等,有助于排查问题和审计操作。Struts框架本身并不包含日志功能,但可以结合Log4j、SLF4J等日志库来实现。 9. **测试** 对于SQL添加功能,进行...

    在wincc中通过vbs操作SQL

    在本文中,我们将探讨如何在WinCC中通过Visual Basic Script (VBS)来操作SQL Server 2005数据库,实现数据的存储和查询功能。 首先,确保你的WinCC项目已经与SQL Server 2005集成。自WinCC 6.2版本起,系统开始支持...

    web安全之sql注入

    在实际开发过程中,如果使用普通的`Statement`来执行SQL语句,由于其直接拼接字符串的方式,很容易受到SQL注入的攻击。而`PreparedStatement`则通过预编译SQL语句并在执行时动态填充参数的方式来避免这一问题。这种...

    封装sql类方法

    - 避免在代码中硬编码SQL语句,使用字符串拼接,而是使用参数化查询。 以上就是关于封装SQL Server 2005类方法的基本步骤和要点。通过这样的封装,我们可以将数据库操作模块化,使得代码更加清晰、易于维护,同时...

    eml企业通讯录管理系统 v5.0 登录页面 SQL注入1

    在上述例子中,用户输入的`username`参数直接拼接到SQL查询中,当输入包含SQL语句的一部分时,整个查询的逻辑就被改变了。攻击者可以通过注入SQL语句来执行未授权的操作,如读取、修改或删除数据库中的数据,甚至...

    struts包 SqlServer JDBC链接包

    开发者可以通过DriverManager类加载驱动,建立Connection,然后执行SQL语句并通过ResultSet获取数据。 标签中的"String"可能指的是字符串处理,在Java中,字符串是非常常见且重要的数据类型。在开发过程中,我们...

    eml企业通讯录管理系统 v5.0 通讯录页面SQL注入1

    SQL注入是一种常见的网络安全攻击手法,攻击者通过在输入字段中插入恶意SQL代码,欺骗数据库服务器执行非预期的操作,以获取敏感信息或破坏数据。这种攻击通常发生在Web应用未对用户输入进行充分验证和转义的情况下...

    eml企业通讯录管理系统 v5.0 我的应用页面SQL注入1

    然而,由于没有对`kewords`进行适当的输入验证和过滤,攻击者可以通过提交带有恶意SQL语句的`kewords`值,绕过权限检查并执行非授权的操作。 例如,提供的漏洞复现payload "3' union select user(),2,3,version(),...

    SQLSERVER2000一些内置存储过程用法和说明

    这段代码中存在的问题是直接将用户输入拼接到 SQL 语句中,这很容易导致 SQL 注入攻击。正确的做法是使用参数化查询或者存储过程来避免此类问题。例如,可以改为使用参数化查询: ```vbscript If Request(...

    【ASP.NET编程知识】asp.net用三层实现多条件检索示例.docx

    首先,我们需要在界面层接收用户的选择条件,然后传递给业务逻辑层,在业务逻辑层中拼接 SQL 语句,但是这违背了三层架构的原则,因为界面层和业务逻辑层的耦合度太高。 解决方案是在界面层和业务逻辑层之间添加一...

    CmsEasy代码审计1

    在`lib/inc/table.php`的`query()`函数中,SQL语句被传递给`$this-&gt;db-&gt;query()`,最终在`lib/inc/dbmysqli.php`的`query()`函数中,通过`$this-&gt;mysqli-&gt;query()`执行。这里的问题在于,从文件读取的内容到执行SQL...

    采用 LINQ to SQL+ Flexigrid for JQuery and Json 创建的ASP.NET MVC 模式程序例子

    通过LINQ,开发者可以使用强类型对象和方法调用来执行数据库操作,而不是传统的字符串拼接SQL语句。在ASP.NET MVC项目中,LINQ to SQL简化了数据访问层,使得与数据库的交互更加直观和安全。 **ASP.NET MVC**...

    struts2 and ibatis

    iBATIS允许开发者将SQL语句直接写在XML配置文件中,或者通过注解方式内嵌到Java代码中,实现了SQL与Java代码的解耦。此外,iBATIS还支持动态SQL,可以根据条件自动拼接SQL语句,大大提高了开发效率。在iBATIS中,...

    Chloe-master.zip_C#开源ORM框架_Chloe.Extension_Master Dot Action

    1. **SQL构建器**:Chloe提供了一套强大的SQL构建语法,支持复杂查询,如联接、子查询、分组、排序等,使得开发者可以通过简单的API编写复杂的SQL语句,而无需直接拼接字符串。 2. **动态SQL**:Chloe允许开发者在...

    源代码-编码添加单引号工具软件.docx

    它首先通过`FileInputStream`读取上传的Excel文件,然后使用jxl库解析工作簿(Workbook)和工作表(Sheet),遍历每一行,提取出编码(Cell中的内容),并在编码前后添加单引号,最后通过`StringBuffer`拼接成逗号...

    TiDB 辅导材料,考前必看

    SQL 语句的 TSO 获取一般在解析和编译操作之前完成。 5、TiDB Server 将关系型数据转换为 key-value 数据操作顺序: 将主键(Primary Key)单独分离出来,与表的 Table ID 拼接,作为 key 序列。主键(Primary Key...

    ibatis+struts2

    4. **Mapper接口**:Java接口,每个方法对应一个SQL语句,方便在Java代码中调用。 5. **动态SQL**:iBatis支持条件拼接,可以根据不同参数动态生成SQL,提高了SQL的复用性。 **Struts2知识点:** 1. **Action类**:...

    Spring+Struts+myBatis整合可运行

    iBatis消除了手动编写大量的JDBC代码,它允许开发者将SQL语句写在XML配置文件或注解中,与Java代码解耦。iBatis提供动态SQL功能,可以根据条件灵活地拼接SQL,提高了数据库操作的灵活性和效率。同时,iBatis的...

    asp批量录入数据

    综上所述,ASP批量录入数据的实现主要涉及数据库连接、表单数据处理、SQL语句构建、用户界面交互和流程控制。在实际应用中,为了提高性能,可以考虑使用参数化查询或者存储过程,同时要注意数据安全,避免SQL注入...

    Struts2+spring+Mybatis

    Mybatis作为持久层框架,专注于数据库操作,它将SQL语句与Java代码解耦,通过XML或注解来配置和映射原生信息,从而简化了JDBC的复杂性。Mybatis支持预编译的SQL语句,避免了字符串拼接造成的性能问题,同时允许...

Global site tag (gtag.js) - Google Analytics