Day45(15)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management
分页查询优化
用实现类封装
@GetMapping
public Result page(EmpQueryParam empQueryParam){
log.info("分页查询:{}",empQueryParam);
PageResult<Emp> pageResult = empService.page(empQueryParam);
return Result.success(pageResult);
}
PageResult<Emp> page(EmpQueryParam empQueryParam);
@Override
public PageResult<Emp> page(EmpQueryParam empQueryParam) {
//1.设置分页参数
PageHelper.startPage(empQueryParam.getPage(),empQueryParam.getPageSize());
//2.执行查询
List<Emp> rows = empMapper.list(empQueryParam);
//3.解析结果,封装结果 PageResult
//page的父类是ArrayList,ArrayList的父类是List,可以父转子强转;
Page<Emp> p = (Page<Emp>) rows;
return new PageResult<Emp>(p.getTotal(),p.getResult());
// //2.执行查询
// Page<Emp> p = empMapper.list(name,gender,begin,end);
// //3.解析结果,封装结果 PageResult
// //page的父类是ArrayList,ArrayList的父类是List,可以父转子强转;
// return new PageResult<Emp>(p.getTotal(),p.getResult());
}
public List<Emp> list(EmpQueryParam empQueryParam);
动态查询
动态SQL修改sql对应的xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmpMapper">
<select id="list" resultType="com.itheima.pojo.Emp">
select e.*,d.name deptName from emp e left join dept d on e.dept_id = d.id
<where>
<if test="name != null and name != ''">
e.name like concat('%',#{name},'%')
</if>
<if test="gender != null">
and e.gender = #{gender}
</if>
<if test="begin != null and end != null">
and entry_date between #{begin} and #{end}
</if>
</where>
order by e.update_time desc
</select>
</mapper>
新增员工
涉及两张表
涉及文件上传
/**
* 新增员工基本信息
* @param emp
*/
@Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)\n" +
" VALUES (#{username},#{name},#{gender},#{phone},#{job},#{salary},#{image},#{entryDate},#{deptId},#{creatdateTime},#{updateTime})")
void insert(Emp emp);
主键自增
由于Emp中主键是数据库自动补充,在Emp类中并没有封装Emp的id值,需要先将Emp的id提供主键返回赋值会Emp类的对象中,然后再提供调用Emp类的id属性为EmpExpr类的id来赋值。
@Override
public void save(Emp emp) {
//1.保存员工的基本信息
emp.setCreateTime(LocalDateTime.now());
emp.setUpdateTime(LocalDateTime.now());
empMapper.insert(emp);
//2.保存员工的基本工作经历信息
List<EmpExpr> exprList = emp.getExprList();
if (!CollectionUtils.isEmpty(exprList)){
//遍历集合,为empId赋值
exprList.forEach(empExpr->{
empExpr.setEmpId(emp.getId());
});
empExprMapper.insertBatch(exprList);
}
@Options(useGeneratedKeys = true, keyProperty = "id")//获取到生成的主键------主键返回--------由mybatis提供
@Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)" +
" VALUES (#{username},#{name},#{gender},#{phone},#{job},#{salary},#{image},#{entryDate},#{deptId},#{createTime},#{updateTime})")
void insert(Emp emp);
package com.itheima.mapper;
import com.itheima.pojo.EmpExpr;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 员工工作经历
*/
@Mapper
public interface EmpExprMapper {
/**
* 批量保存员工的工作经历
* @param exprList
*/
void insertBatch(List<EmpExpr> exprList);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmpExprMapper">
<!-- 批量保存员工工作经历
foreach:
collection:遍历的集合
item:遍历出来的元素的名字
separator:每次循环之间的分隔符
-->
<insert id="insertBatch">
insert into emp_expr(emp_id, begin, end, company, job) VALUES
<foreach collection="exprList" item="expr" separator=",">
(#{expr.empId},#{expr.begin},#{expr.end},#{expr.company},#{expr.job})
</foreach>
</insert>
</mapper>
事务管理
-- 开启事务
start transaction ;
-- 保存员工基本信息 - emp
insert into emp(id,username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)
values (49,'duanyu','段誉',1,'13356560022',1,6000,'1.jpg','2020-01-01',1,now(),now());
-- 批量保存员工工作经历信息 - emp_expr
insert into emp_expr(emp_id, begin, end, company, job)
VALUES (49,'2020-01-01','2021-01-01','百度','java开发'),
(49,'2021-01-01','2023-01-01','字节','java开发');
-- 提交事务
commit;
-- 回滚事务
rollback ;
@Transactional//事务管理的注解
@Override
public void save(Emp emp) {
//1.保存员工的基本信息
emp.setCreateTime(LocalDateTime.now());
emp.setUpdateTime(LocalDateTime.now());
empMapper.insert(emp);
//2.保存员工的基本工作经历信息
List<EmpExpr> exprList = emp.getExprList();
if (!CollectionUtils.isEmpty(exprList)){
//遍历集合,为empId赋值
exprList.forEach(empExpr->{
empExpr.setEmpId(emp.getId());
});
empExprMapper.insertBatch(exprList);
}
}
spring:
application:
name: tilas-web-management
#数据库的连接信息
datasource:
url: jdbc:mysql://localhost:3306/tilas
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1234
#配置Mybatis的相关配置
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置映射,开启了驼峰命名映射的开关
map-underscore-to-camel-case: true
#配置事务管理日志级别
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager: debug

浙公网安备 33010602011771号