javaweb的基础2
六、Mybatis基础操作
1、Mybatis基础操作-环境准备
页面需求和操作步骤:
- 准备数据库表 emp
- 创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok)
- application.properties中引入数据库连接信息 创建对应的实体类 Emp(实体类属性采用驼峰命名)
- 准备Mapper接口 EmpMapper
(1)准备表和数据
(2)springboot项目创建
2、Mybatis-基础操作-删除
(1)直接删除id
(2)动态删除
delete方法中设置形参id
在运行测试类时传入参数id的具体数值
查看emp表中id=17的数据是否删除
注:老师给的代码中的数据库连接配置密码与自己的可能不一致,需修改。
(3)在控制台输出执行的sql语句
(4)预编译
(5)不使用预编译登录
- 打开sql的jar包服务器
- 打开http://localhost:9090/login.html网址
- 输入用户名和密码(全正确,其中一个错误,全部错误),查看登录情况和命令提示符界面的sql语句
当用户名和密码都错误却可以登录成功,原因是直接将参数拼接在sql语句中,预编译可以解决这个问题。
(6)使用预编译登录
使用预编译时,使用?拼接sql语句。若用户名和密码错误时,则登录不成功。
(5)小结
3、Mybatis-基础操作-新增
- EmpMapper中编写sql语句
- Emp有表的字段名
- 测试类中传入字段的具体值和调用EmpMapper的insert方法
(1)图示新增表数据
4、Mybatis-基础操作-新增(主键返回)
有时候需要获取添加数据的主键值
- EmpMapper中添加注解@Options
- 在测试类中修改要添加的数据并加入一行输入id的代码
(1)图示步骤
5、Mybatis-基础操作-更改
更改的sql语句
在测试类中调用更改的方法
6、Mybatis-基础操作-查询(where的某一个字段)
public Emp getById(Integer id);
Emp emp=empMapper.getById(20);
(1)id查询
查询id为xx的数据并将返回数据Emp类的对象。
输出:执行测试方法时将getById的方法返回结果emp对象输出
运行结果:deptId值为null
(2)属性名的自动封装
id=20时,查询结果中某些字段的值为null。原因如图:
(3)解决不自动封装的问题
只需要开启映射开关,其他不变。
(4)小结:3种自动封装的方法
7、Mybatis-基础操作-条件查询(where下的多个字段)
(1)需求案例
(2)使用mybatis进行条件查询
方法1:name直接拼接
方法2:name预编译
(3)条件查询小结
8、Mybatis-基础操作-XML映射文件
通过xml来编写SQL查询语句,而不是用注释的方法来编写SQL查询语句
public List <Emp> list(String name,Short gender,LocalData begin,LocalData end);
List<Emp> empList=empMapper.list("张",1,xx,xx);
(1)映射条件的步骤
(2)映射的步骤
- 查询方法在EmpMapper中
- 查询语句在EmpMapper.xml
- 测试方法在测试类
(3)映射与注释对比
9、Mybatis-动态SQL-if(where下的所有字段皆可以为null)
动态查询时,没有查询的字段就不显示。如:张
非动态查询时,没有查询的字段为null。如:张,null,null,null
(3)小结
10、
(1)非动态更新emp表
EmpMapper
test
结果没有更新的字段为null,如:张,null
(2)动态更新emp表
EmpMapper类
xml
test
结果没有更新的字段保持不变。如:张,不变
七、web开发综合案例
1、环境搭建
(1)需求
部门管理:增删改查
员工管理:增删改查
(2)环境搭建步骤
2、环境搭建实操
(1)创建springboot工程,准备数据库表dept等
(2)application.properties和pom.xml配置
pom.xml:web起步依赖、mybatis起步依赖、mysql起步依赖、lombok起步依赖、springboot起步依赖、springboot单元测试。
application.properties:数据库连接的四要素、mybatis的输出日志的位置、驼峰命名自动映射的开关
(3)工程的代码目录:controller、mapper、pojo、service目录
(4)导入result类到pojo包下
(5)开发流程
页面原型的需求-接口文档-思路分析-接口开发-接口测试-前后端联调
3、案例-部门管理-查询
(1)DeptController:调用service的list
(2)DeptServiceImpl:调用mapper的list
(3)DeptMapper
(4)启动服务器
(5)postman的测试