`

ibatis模糊查询

阅读更多

           模糊查询(实体类映射文件配置):


<select id="selectStudentByName" parameterClass="String" resultClass="Student">
    select sid, sname, major, birth, score
        from Student
        where sname like '%$sname$%'
</select>



            看api doc:
queryForList
java.util.List queryForList(java.lang.String id,
                    java.lang.Object parameterObject)
                    throws java.sql.SQLExceptionExecutes a mapped SQL SELECT statement that returns data to populate a number of result objects.
The parameter object is generally used to supply the input data for the WHERE clause parameter(s) of the SELECT statement.


Parameters:
    id - The name of the statement to execute.
    parameterObject - The parameter object (e.g. JavaBean, Map, XML etc.).
Returns:
    A List of result objects.
Throws:
    java.sql.SQLException - If an error occurs.

            看Student.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
         PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
         "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
    <!-- Result maps describe the mapping between the columns returned
         from a query, and the class properties. A result map isn't
         necessary if the columns(or aliases) match to the properties
         exactly.-->

    <typeAlias alias="Student" type="com.itcast.Student"/>

    <select id="selectAllStudents" resultClass="Student">
        select * from Student
    </select>

    <select id="selectStudentById" parameterClass="int" resultClass="Student">
        select * from Student where sid = #sid#
    </select>

    <insert id="insertStudent" parameterClass="Student">
        insert into Student(sid, sname, major, score, birth)
            values(#id#, #sname#, #major#, #score#, #birth#)
    </insert>

    <delete id="deleteStudentById" parameterClass="int">
        delete from Student where sid = #id#
    </delete>

    <update id="updateStudentById" parameterClass="Student">
      update Student
          set
              sname = #sname#,
              major = #major#,
              score = #score#,
              birth = #birth#
          where
              sid = #sid#
    </update>

    <select id="selectStudentByName" parameterClass="String" resultClass="Student">
        select sid, sname, major, birth, score
            from Student
            where sname like '%$sname$%'
    </select>

</sqlMap>



               IStudentDAOImpl.java

 
package com.itcast; 
 
import java.io.IOException; 
import java.io.Reader; 
import java.sql.Date; 
import java.sql.SQLException; 
import java.util.List; 
 
import com.ibatis.common.resources.Resources; 
import com.ibatis.sqlmap.client.SqlMapClient; 
import com.ibatis.sqlmap.client.SqlMapClientBuilder; 
 
public class IStudentDAOImpl implements IStudentDAO { 
 
    private static SqlMapClient sqlMapClient = null; 
 
    static { 
        try { 
            Reader reader = Resources 
                    .getResourceAsReader("com/itcast/SqlMapConfig.xml"); 
            sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); 
 
            reader.close(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    @Override 
    public void addStudent(Student student) { 
        try { 
            sqlMapClient.insert("insertStudent", student); 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    @Override 
    public void addStudentBySequence(Student student) { 
    } 
 
    @Override 
    public void deleteStudentById(int id) { 
        try { 
            System.out.println(sqlMapClient.delete("deleteStudentById", id)); 
            // 删除成功与否,是看有没有返回值,如果大于0,就删除成功了。 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    @Override 
    public List<Student> queryAllStudent() { 
        List<Student> studentList = null; 
        try { 
            studentList = sqlMapClient.queryForList("selectAllStudents"); 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
        return studentList; 
    } 
 
    @Override 
    public Student queryStudentById(int id) { 
        Student student = null; 
        try { 
            student = (Student) sqlMapClient.queryForObject( 
                    "selectStudentById", id); 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
        return student; 
    } 
 
    @Override 
    public List<Student> queryStudentByName(String name) { 
        List<Student> studentList = null; 
        try { 
            studentList = sqlMapClient.queryForList("selectStudentByName", name); 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } 
        return studentList; 
    } 
 
    @Override 
    public void updateStudentById(Student student) { 
        try { 
            System.out.println(sqlMapClient.update("updateStudentById", student)); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
 
    public static void main(String[] args) { 
        IStudentDAO dao = new IStudentDAOImpl(); 
        // 第一种情况 
        // for(Student student : dao.queryAllStudent()){ 
        // System.out.println(student); 
        // } 
 
        // 第二种情况 
        // System.out.println(dao.queryStudentById(3)); 
 
        // 第三种情况 
        // Student student = new Student(); 
        // student.setSid(111); 
        // student.setSname("小茜"); 
        // student.setMajor("传媒设计"); 
        // student.setBirth(Date.valueOf("1990-2-15")); 
        // student.setScore(98); 
        // 
        // dao.addStudent(student); 
 
        // 第四种情况 
        // dao.deleteStudentById(2); 
 
        // 第五种情况 
//      Student student = new Student(); 
//      student.setSid(111); 
//      student.setSname("小茜二代"); 
//      student.setMajor("传媒设计高级班"); 
//      student.setBirth(Date.valueOf("1990-7-17")); 
//      student.setScore(97); 
// 
//      dao.updateStudentById(student); 
 
        // 第六种情况 
        for(Student student : dao.queryStudentByName("茜")){ 
            System.out.println(student); 
        } 
    } 
} 



              运行,控制台输出:

sid=111 sname=小茜二代 major=传媒设计高级班 birth=Tue Jul 17 00:00:00 CDT 1990 score=97.0


              也可以这样,Student.xml:

 
<select id="selectStudentByName" parameterClass="String" resultClass="Student"> 
    select sid, sname, major, birth, score 
        from Student 
        where sname like '$sname$' 
</select> 



              在IStudentDAOImpl.java

 
// 第六种情况 
for(Student student : dao.queryStudentByName("%茜%")){ 
    System.out.println(student); 
} 



             运行IStudentDAOImpl.java,控制台输出:

sid=111 sname=小茜二代 major=传媒设计高级班 birth=Tue Jul 17 00:00:00 CDT 1990 score=97.0


一个是外部写sql指定百分号%,一个是在传入的时候指定

分享到:
评论

相关推荐

    iBATIS模糊查询

    iBATIS模糊查询 iBATIS模糊查询是指使用iBATIS框架实现模糊查询的方法。模糊查询是指在数据库中搜索包含指定字符串的记录,通常使用LIKE谓词来实现。 在iBATIS中,模糊查询可以通过在映射文件中定义SQL语句来实现...

    IBatis完成单表基本的数据库操作 模糊查询

    标题 "IBatis完成单表基本的数据库操作 模糊查询" 涉及到的是使用iBatis这个轻量级的持久层框架进行数据库的基本操作,特别是模糊查询。iBatis是一个优秀的SQL映射框架,它允许开发者将SQL语句与Java代码分离,提高...

    07_ibatis教程_模糊查询实体对象.zip

    在本教程"07_ibatis教程_模糊查询实体对象"中,我们将深入学习如何使用iBatis这个流行的Java持久层框架进行模糊查询操作,尤其是在处理实体对象时。iBatis作为一个轻量级的ORM(Object-Relational Mapping)工具,它...

    07_ibatis教程_模糊查询实体对象.rar )

    在Ibatis教程中,"07_传智播客ibatis教程_模糊查询实体对象"这部分内容可能涵盖了如何将用户输入的实体对象与SQL语句中的模糊查询条件相结合,例如如何将一个User对象的属性作为模糊查询的关键词。教程可能通过实际...

    ibatis的动态查询

    **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` 的方式更为安全且易于实现。 - 正确的语法应为 `name ...

    操作数据库 iBATIS查询

    当需要执行一个模糊查询时,通常会使用`LIKE`关键字配合通配符`%`。例如,以下SQL语句将查询所有姓“张”的学生: ```sql SELECT * FROM T_STUDENT WHERE S_NAME LIKE '张%'; ``` 在iBATIS中,可以使用类似的方法...

    ibatis的实现(包含模糊查询、关联查询、增删改查)

    本篇将详细讲解Ibatis在实现模糊查询、关联查询以及增删改查操作时的关键知识点。 首先,模糊查询是数据库操作中常见的功能,Ibatis通过`&lt;if&gt;`标签或`&lt;where&gt;`标签配合`#{}`占位符来实现。例如,如果你有一个用户...

    ibatis总结 ibatis ibatis ibatis ibatis

    - 在编写SQL时,应避免使用全模糊匹配`LIKE '%text%'`,而应尽可能使用带有前缀或后缀的模糊匹配,如`LIKE 'text%'`,这可以显著提升查询效率。 - 使用`EXISTS`子查询通常比直接关联查询更高效,尤其是在数据量大...

    常用ibatis配置

    描述部分提到的“返回新建数据ID,分页查询,查询条件,模糊查询,date时间段,list集合,截止日期”则是在iBatis配置中常见的几种操作场景,这些场景在数据持久化的操作中非常实用。下面详细解释这些知识点: 1. 返回...

    iBATIS课件

    iBATIS课件 iBATIS简介 搭建环境 配置文件 读取配置 基本的CRUD操作 模糊查询 iBATIS代码生成工具iBATOR 优缺点 选择Hibernate还是iBATIS

    J2ME数据库操作模糊查询

    除了使用JDBC,还可以使用ORM(Object-Relational Mapping)框架,如ProGuard或iBatis,它们可以帮助简化数据库操作,将Java对象与数据库表映射起来,从而更方便地实现模糊查询。 在J2ME中进行模糊查询时,还需要...

    jsf+ibatis增删改查

    模糊查询通常涉及SQL的`LIKE`操作,可以在iBatis的映射文件中配置,然后在JSF页面提供搜索框,将输入传递给后台进行模糊匹配。 9. **错误处理和验证**:JSF提供了内置的验证机制,可以对用户输入进行校验,防止无效...

    ibatis常见案例

    本篇文章将深入探讨Ibatis在实际应用中的常见案例,包括多表查询、分页、增删改查、模糊查询以及按指定列查询。 **1. 多表查询** 在实际项目中,多表查询是非常常见的需求。Ibatis通过`&lt;select&gt;`标签和`...

    ibatis Example使用

    可以看到,可以针对不同的字段设置各种条件,例如模糊匹配、范围查询等。 #### 4.3 设置排序 ```java if (record.getSortfield() != null && record.getDir() != null) example.setOrderByClause(record....

    ibatis sql生成工具

    此外,该工具可能还包含了对复杂的查询条件的支持,比如模糊搜索、分页查询等,这些在生成的SQL中会以动态SQL的形式出现,使得代码更加简洁和易于维护。对于大型项目而言,这种自动化生成的功能能够显著减少编码时间...

    ibatisDemo

    "ibatisDemo"是一个示例项目,旨在展示如何在实际开发中运用Ibatis进行MySQL数据库的单表操作,包括增、删、改、查以及模糊查询和多参数查询等基本功能。以下是对这个项目及其相关知识点的详细解释: 1. **Ibatis...

    ibatis-sqlmap-2.3.0中sqlmap支持通配符

    在Ibatis的XML配置文件中,可以使用`&lt;if&gt;`标签来插入动态SQL部分,结合`#{}`占位符和通配符,实现动态模糊查询。例如: ```xml SELECT * FROM my_table WHERE column_name LIKE #{searchKeyword} ``` 在...

    ibatis sql语句对条件中特殊字符% # 处理

    例如,在实现模糊查询功能时,用户的搜索关键词可能包含SQL中的特殊字符,比如`%`、`_`等。如果不做任何处理,这些特殊字符将会被SQL引擎视为通配符,从而导致查询结果出现偏差。 #### 二、特殊字符处理方法 #####...

    ibatis框架实现的增删改查

    本篇文章将深入探讨如何使用Ibatis框架实现对`student`表的增删改查操作,包括模糊查询以及利用序列自动生成主键。 首先,我们来理解Ibatis的基本概念。Ibatis是由Apache基金会维护的一个开源项目,它是一个SQL映射...

    Mybatis 中 Oracle 的拼接模糊查询及用法详解

    Mybatis 中 Oracle 的拼接模糊查询及用法详解 Mybatis 是一个基于 Java 的持久层框架,提供了强大的数据库交互能力,而 Oracle 则是业界最流行的关系数据库管理系统。本文将详细介绍 Mybatis 中 Oracle 的拼接模糊...

Global site tag (gtag.js) - Google Analytics