mybatis中的模糊查询

本文详细介绍了模糊查询的不同类型,包括左模糊查询、右模糊查询及整个模糊查询,并通过MyBatis框架示例展示了如何实现这些查询方式。此外,还讨论了不同SQL语句的潜在安全性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模糊查询被我们片面的理解为只有一种,其实模糊查询查询包括左模糊查询,右模糊查询和整个模糊查询

左模糊查询:

/**
* 左模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);


<!--左模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE '' #{name } '%' AND age>#{age}
</select>


/**
* 左模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("飞");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}


右模糊查询
/**
* 右模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);



<!--右模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE '%' #{name } '' AND age>#{age}
</select>



/**
* 右模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("张");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}


整个模糊查询

/**
* 整个模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);



<!--整个模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE '%' #{name } '%' AND age>#{age}
</select>



/**
* 整个模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("张");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}


模糊查询的sql语句三种形式
前二种不会引起sql注入,第三种会引起sql注入
SELECT  *from Student WHERE  name LIKE  concat('%',#{name },'%' AND age>#{age})
SELECT  *from Student WHERE  name LIKE '%' #{name } '%' AND age>#{age}

SELECT *from Student WHERE name LIKE '%${name}%' AND age>#{age}
 
 



 
 

转载于:https://www.cnblogs.com/sujulin/p/7588888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值