Mybatis中特殊SQL的执行
1.模糊查询
大家应该还记得sql语句的模糊查询怎么写吧,那就是使用关键字like,
并且有相应的通配符一起使用,%表示多个字符,_表示一个字符,比如说现在有一张表user,查询name中第一个字母是l的人select * from user where name like ‘_l’;
如果是查询name中有 l 的人select * from user where name like ‘%l%’;
模糊查询不可以使用#{},接下来通过案例来说明一下,提供一个mapper接口用来测试,里面定义了操作数据库的各种方法
List<User> getUserByLike(@Param("username") String username);
在映射文件中写上我们要进行执行的sql语句
<select id="getUserByLike"
resultType="com.atguigu.mybatis.pojo.User">
select *
from t_user
where username like '%#{username}%';
</select>
然后进行测试
那要怎么解决上述问题呢,有两种方式可以解决。
解决方法1
SQL语句中的#{}换成${}
<select id="getUserByLike"
resultType="com.atguigu.mybatis.pojo.User">
select *
from t_user
where username like '%${username}%';
</select>
解决方法2
使用字符串拼接
<select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
select *
from t_user
where username like concat('%',#{username},'%');
</select>
解决方法3(建议使用这种方式)
<select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
select *
from t_user
where username like "%"#{username}"%";
</select>
2.批量删除
delete from 表名 where 筛选条件
int delete(@Param("ids") String ids);
在映射文件中写下面的代码
<delete id="delete" >
delete from t_user where id in(#{ids});
</delete>
那我们要怎么解决呢?
可以使用${}
<delete id="delete" >
delete from t_user where id in(#{ids});
</delete>
总结: 在这里批量删除不能使用#{},因为它会自动加上’ '进行字符串拼接 ,而我们的数据库中,字段id的属性是int类型的,由于#{}会自动加上单引号所以不可以,是不正确的,但是如果id字段的属性是varchar,我们就得用#{],而不是${}
3.动态设置表名
也就是说我们查询的时候,能不能不要把表名给写死,我们可以传入表的名字,然后根据表名来查询数据
List<User> getUserByTableName(@Param("tableName") String table);
<select id="getUserByTableName" resultType="com.atguigu.mybatis.pojo.User">
select * from ${tableName}
</select>
注意点:我们以前在学习MySQL的时候,比如说写一个查询语句select * from user;我们这里的表名不能加引号对吧,同样的道理我们在映射文件写的sql语句,表名也不能加引号,那样就变成字符串了,所以动态设置表名应该使用${}
4. 添加功能获取自增的主键
- t_clazz(clazz_id,clazz_name)
- t_student(student_id,student_name,clazz_id)
- 1.添加班级信息
- 2.获取新添加的班级id
- 3.为班级分配学生,就是说把某一个学生的班级id修改成新添加的班级id
int insertUser(Useruser);
<!
--int insertUser(Useruser);
-->
<insert id="insertUser"useGeneratedKeys="true"keyProperty="id">
insert into t_user values(null,#{username},#{password} )
</insert>
到此这篇关于Mybatis中特殊SQL的执行的文章就介绍到这了,更多相关Mybatis SQL 执行内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341