一、使用#定义参数
持久层接口添加根据名字内容模糊查询方法
// 根据名字内容模糊查询
List findByNameLike(String username);UserMapper.xml映射文件添加标签
select * from user where username like #{name}
数据类型
别名
byte _byte
long _long
short _short
int _int
int _integer
double _double
float _float
boolean _boolean
String string
Byte byte
Long long
Short short
Interger int / interger
Double double
Float float
Boolean boolean
Date date
BigDecimal decimal / bigdecimal
Object object
Map map
HashMap hashmap
List list
ArrayList arraylist
Collection collection
Iterator iterator
添加测试方法
// 测试根据名字模糊查询
@Test
public void testFindByNameLike(){String like = "%l%"; List<User> list = userMapper.findByNameLike(like); list.forEach(System.out::println);
}
运行结果
二、使用$定义参数
- UserMapper.xml映射文件更改标签内容
select * from user where username like '%${value}%'
修改测试方法
// 测试根据名字模糊查询
@Test
public void testFindByNameLike(){String like = "l"; List<User> list = userMapper.findByNameLike(like); list.forEach(System.out::println);
}
运行结果
表示sql模板的占位符,$表示将字符串拼接到sql模板中。
可以防止sql注入,一般能用#就不用$。
${}内部的参数名必须写value。
三、使用标签定义参数
- UserMapper.xml映射文件更改标签内容
select * from user where username like #{likeName}
- 运行结果
四、聚合查询
- 持久层接口添加查询所有用户个数方法
// 查询用户总数
int findCount(); - UserMapper.xml添加标签
select count(id) from user
添加测试方法
// 测试聚合查询方法
@Test
public void testFindCount(){System.out.println(userMapper.findCount());
}
运行结果
还是比较可靠的,确实查询出来了用户总数
五、主键回填
- 持久层接口添加新增用户方法
// 主键回填-新增用户
void add2(User user); - UserMapper.xml添加标签
select last_insert_id();
insert into user(username,sex,address)
values (#{username},#{sex},#{address})
添加测试方法
// 测试主键回填功能
@Test
public void testAdd2(){User user = new User("Lions","man","Beijing"); userMapper.add2(user); session.commit(); System.out.println(user.getId());
}
运行结果
好,控制台是成功显示添加了,用户id为11,那我们看看表里面是否成功添加了
确实是成功添加了,ok,本篇文章到此为止了,感谢小伙伴的浏览,顺便点击下面投一下票囖,看看您是否有学到了呢