model
public class User implements Serializable {
private Integer userId;
private String userName;
private String userAddress;
}
interface
public interface IUserDao {
List<User> findByName(String username);
}
mybatis.xml
<select id="findByName" resultType="com.User" parameterType="String">
select * from user where username like #{username}
</select>
测试
@Test
public void testFindByName(){
//5.执行查询一个方法
List<User> users = userDao.findByName("%王%");
for(User user : users){
System.out.println(user);
}
}
另一种方式:
<select id="findByName" parameterType="string" resultType="com.itheima.domain.User">
select * from user where username like '%${value}%'
</select>
测试
@Test
public void testFindByName(){
//5.执行查询一个方法
List<User> users = userDao.findByName("王");
for(User user : users){
System.out.println(user);
}
}
#{}与${}的区别
#{}表示一个占位符号:
通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换,
#{}可以有效防止 sql 注入。
表
示
拼
接
s
q
l
串
:
通
过
{}表示拼接 sql 串: 通过
表示拼接sql串:通过{}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换,
可
以
接
收
简
单
类
型
值
或
p
o
j
o
属
性
值
,
如
果
p
a
r
a
m
e
t
e
r
T
y
p
e
传
输
单
个
简
单
类
型
值
,
{}可以接收简 单类型值或 pojo 属性值,如果 parameterType 传输单个简单类型值,
可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,{}括号中只能是 value。