系列文章目录
前言
mybatis-入门-模糊查询
[${}]:表示拼接SQL字符串
[${value}]:表示要拼接的是简单类型参数。
注意:
1、如果参数为简单类型时,${}里面的参数名称必须为value
2、${}会引起SQL注入,一般情况下不推荐使用。但是有些场景必须使用${},比如order by ${colname}
写法:
<select id="findUserByName" parameterType="String" resultType="com.gyf.domain.User">
SELECT * FROM USER WHERE username like '%${value}%'
</select>
demo里面:
具体代码分析:
如果查询到多条数据,应该都返回
所以模糊查询返回的是一个集合
需要注意的的是
因为它会调用get方法 get value 是固定写法
总结
直接贴代码
映射文件:
User.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
<!--
[id]:statement的id,要求在命名空间内唯一
[parameterType]:入参的java类型
[resultType]:查询出的单条结果集对应的java类型
[#{}]: 表示一个占位符?
[#{id}]:表示该占位符待接收参数的名称为id。注意:如果参数为简单类型时,#{}里面的参数名称可以是任意定义
-->
<select id="findUserById" parameterType="int" resultType="com.gyf.model.User">
SELECT * FROM user WHERE id=#{id}
</select>
<!--[${}]:表示拼接SQL字符串-->
<!--[${value}]:表示要拼接的是简单类型参数。-->
<!--注意:-->
<!--1、如果参数为简单类型时,${}里面的参数名称必须为value-->
<!--2、${}会引起SQL注入,一般情况下不推荐使用。但是有些场景必须使用${},比如order by ${colname}-->
<!--写法:-->
<select id="findUserByName" parameterType="String" resultType="com.gyf.model.User">
select * from User where username like '%${value}%'
</select>
</mapper>
测试类
Demo:
package test;
import com.gyf.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Demo01 {
@Test
public void test01() throws IOException {
//a、读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//b、通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
//c、通过SqlSessionFactory创建SqlSession
SqlSession session =ssf.openSession();
//d、调用SqlSession的操作数据库的方法
User user = session.selectOne("findUserById",16);
System.out.println(user);
//模糊查询
List<User> list=session.selectList("findUserByName","小");
System.out.println(list);
//e、关闭SqlSession
session.close();
}
}