MyBatis增删改查

4.1新增员工

1)、编辑EmpMapper.xml文件, 添加新增员工对应的sql.

MyBatis增删改查

2)、编写TestMybatis类,添加testInsert方法,实现新增员工操作。

MyBatis增删改查

4.2修改员工

1)、编辑EmpMapper.xml文件, 添加新增员工对应的sql.

MyBatis增删改查

2)、编写TestMybatis类,添加testUpdate方法,实现修改员工信息。

MyBatis增删改查

4.3删除员工

1)、编辑EmpMapper.xml文件, 添加新增员工对应的sql.

MyBatis增删改查

2)、编写TestMybatis类,添加testDelete方法,实现删除员工。

MyBatis增删改查

4.4#{}占位符

在上面的增删改查操作中,SQL语句中的值是写死在SQL中,而在实际开发中,此处的值往往是用户提交过来的值,因此这里我们需要将SQL中写死的值替换为占位符。
使用占位符完成上面的增删改查练习

练习5、查询:查询指定id的员工信息

MyBatis增删改查

练习6:往emp表中添加一个新员工

MyBatis增删改查
MyBatis增删改查

练习7:修改员工信息: 张飞 架构师 25000

MyBatis增删改查

练习8:删除指定id的员工信息

MyBatis增删改查

4.5#{}和${}占位符

在上面的增删改查练习中,当SQL语句中包含的参数值是传递过来的,在SQL语句中我们会通过 #{} 占位符进行占位,在SQL语句真正执行时,再将传递过来的值替换SQL语句中的占位符。
其实,#{} 就是JDBC中的问号(?)占位符,因此为了安全考虑,在执行时会对传递过来的值进行转译处理。
例如:查询指定name的员工信息,SQL语句为:
MyBatis增删改查
其实就等价于JDBC中: select * from emp where name=?,如果传过来的参数值为:王海涛,那么最终执行的SQL语句为:
MyBatis增删改查

那么如果我们在传递的时候不是一个参数值,而是一个SQL片段呢?
例如在查询时,我们想动态的传递查询的列:
MyBatis增删改查
此时传递过来的应该是一个SQL片段,不同于上面的参数值,如果此时还用 #{},也会像上面一样被转译处理,这不是我们希望看到的。
如果不想让传过来的SQL片段被转译处理,而是拼接在SQL语句中,那么这里可以使用 ${},例如:
MyBatis增删改查

示例1:查询emp表中所有员工的名称(name)、职位(job):
MyBatis增删改查
示例2: 根据name模糊查询emp表
MyBatis增删改查
MyBatis增删改查

需要注意的是,在传递 KaTeX parse error: Expected 'EOF', got '#' at position 39: … 总结:在大多数情况下还是使用#̲{}占位符,而{}多用于为不带引号的字符串进行占位!

相关文章: