当前位置: 首页 > wzjs >正文

展览展示展厅设计济南seo全网营销

展览展示展厅设计,济南seo全网营销,网站中怎么做网站统计,html生成目录 一、springboot整合mybatis 二、搭建环境 1、引入jar包 2、配置文件 3、准备控制层、业务层、持久层 4、SQLMapper文件 ​编辑 三、动态sql 四、分页 4.1逻辑分页 4.2物理分页 4.2.1引入分页插件在pom.xml 4.2.2使用分页插件 五、事务 编程式事务 声明式事…

目录

一、springboot整合mybatis

二、搭建环境

1、引入jar包

2、配置文件

3、准备控制层、业务层、持久层

4、SQLMapper文件

​编辑

三、动态sql

四、分页

4.1逻辑分页

4.2物理分页

4.2.1引入分页插件在pom.xml

4.2.2使用分页插件

五、事务

编程式事务

声明式事务

六、多表关联映射

 结果集映射:

一对多映射 collection(一个班级有多少学生)

一对一 association

作业

1、自己创建一个新的项目,实现springboot和mybatis的整合(面试题)

2、动态sql相关的标签都有哪些?各自的作用是什么(面试题)

3、分页插件如何实现?(面试题)

4、如何实现一对多映射(先缓缓,放到最后,明天还会再讲一遍)


一、springboot整合mybatis

1、接收请求

2、接收数据

3、事务

4、(创建SqlSessionFactory,SqlSession,UserMapper,)调用方法

5、配置文件 application.yml application.properties (mybatis-config.xml )

二、搭建环境

1、引入jar包

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis 提供的和boot整合的jar包-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>
​
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

2、配置文件

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis 提供的和boot整合的jar包-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>
​
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

3、准备控制层、业务层、持久层

控制层 

@RestController
@RequestMapping("/grade")
public class GradeController {@Autowiredprivate GradeService gradeService;
​//搜索 动态查询@RequestMapping("search")public List<Grade> searchGrade(Grade grade){return gradeService.searchGrade(grade);}// 批量保存@RequestMapping("saveBatch")public int saveBatch(List<Grade> grades) {return gradeService.saveBatch(grades);}
}

业务层 

public interface GradeService {//搜索 动态查询List<Grade> searchGrade(Grade grade);// 批量保存int saveBatch(List<Grade> grades);
}

持久层 

@Mapper
public interface GradeMapper {//搜索 动态查询List<Grade> searchGrade(Grade grade);// 批量保存int saveBatch(List<Grade> grades);
}

4、SQLMapper文件

  • <if>标签必须有test判断双引号里面是否为true,为true则使用if字符串拼接,多个语句拼接要写and或or
  • 动态查询配合模糊查询此处用<where><if>标签实现动态查询、like concat('%',#{gradeName},'%')试实现模糊查询
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hl.mybatis03.mapper.GradeMapper">
<!--    //搜索 动态查询-->
<!--    List<Grade> searchGrade(Grade grade);--><select id="searchGrade" resultType="Grade">select * from grade<where><if test="gradeName != null and gradeName !='' ">grade_name like concat('%',#{gradeName},'%')</if><if test="address != null and address !='' ">and address=#{address}</if></where></select>
<!--    // 批量保存-->
<!--    int saveBatch(List<Grade> grades);-->
</mapper>

三、动态sql

  • <where> 标签       添加where关键字,去除紧邻的 and 或者 or
  • <if> 标签               动态判断 test=""
  • <foreach>标签      循环 collection=“list” item="obj" index="index"——collection属性接收集                                    合、item指定集合中属性名、index指定索引下标的名字
  • <trim>标签            代替where和set
                                  prefix="where" prefixOverrides="and|or"
                                  ——prefix=“”是代替某个标签、prefixOverrides=“”是去除重复的                                                prefix="set" suffixOverrides=","
                                  ——suffixOverrides=“,”是去除最后的逗号
  • <set>标签             动态更新 去除最后的 ,
  • <choose> <when> <otherwise> case-when 选择一个条件执行

新增一般用@requestbody接收前端传来的json集合

//搜索 动态查询
@RequestMapping("search")
public List<Grade> searchGrade(Grade grade){return gradeService.searchGrade(grade);
}
// 批量保存
@RequestMapping("saveBatch")
public int saveBatch(@RequestBody List<Grade> grades) {return gradeService.saveBatch(grades);
}
@Mapper
public interface GradeMapper {//搜索 动态查询List<Grade> searchGrade(Grade grade);// 批量保存int saveBatch(@Param("list") List<Grade> grades);
}
<!--    //搜索 动态查询-->
<!--    List<Grade> searchGrade(Grade grade);--><select id="searchGrade" resultType="Grade">select * from grade<where><if test="gradeName != null and gradeName !='' ">grade_name like concat('%',#{gradeName},'%')</if><if test="address != null and address !='' ">and address=#{address}</if></where></select>
<!--    // 批量保存-->
<!--    int saveBatch(@Param("list")List<Grade> grades);--><insert id="saveBatch">insert into grade(grade_name,address)values<foreach collection="list" item="obj" separator=",">(#{obj.gradeName},#{obj.address})</foreach></insert>

四、分页

4.1逻辑分页

一次性从表中查询所有数据,在客户端分页。

4.2物理分页

每次从数据库表中查询指定条数的数据,返回给前端。

select * from grade limit 10; //第一页

select * from grade limit 11,10; //第二页

4.2.1引入分页插件在pom.xml

pageHelper-spring-boot-starter.jar

4.2.2使用分页插件

分页功能可以设置默认值        @RequestParam(defaultValue = "1")    防止前端没有传递参数

//搜索 动态查询+分页
@RequestMapping("search")
public PageInfo searchGrade(Grade grade,@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "5") Integer pageSize){//开启分页插件 只能对紧邻的第一个sql语句进行分页PageHelper.startPage(pageNum,pageSize);//调用目标方法List<Grade> list = gradeService.searchGrade(grade);//封装分页对象PageInfo pageInfo = new PageInfo(list);return pageInfo;
}

http://localhost:8080/grade/search?pageNum=2&pageSize=3

select——查询满足条件的数据条数

Limit——查询前几条数据

五、事务

编程式事务

connnect.setAutoCommit(false);
connnect.startTransaction();
dml;
connection.commit();|| rollback();

声明式事务

@Transactional
在对应的类上或者方法上声明,即可使用事务。

六、多表关联映射

 结果集映射:

1、resultType :自动结果集映射 列名和属性名自动映射(相同或者满足驼峰式命名法)。

一般应用于单表操作。

2、resultMap: 手动结果集映射 手动的一个个指定列名和属性名的映射关系。

一般用于多表关联映射。

<!--结果集手动映射-->
<!--手动指令列名和属性名的映射关系  type="java中的数据类型,目标数据类型"-->
<resultMap id="baseMap" type="Grade"><!--主键字段映射--><id property="id" column="id"></id><!--非主键字段--><result property="gradeName" column="grade_name"></result><result property="address" column="address"></result>
</resultMap>
<select id="searchGrade" resultMap="baseMap">select * from grade<trim prefix="where" prefixOverrides="and |or"><if test="gradeName != null and gradeName !='' ">grade_name like concat('%',#{gradeName},'%')</if><if test="address != null and address !='' ">and address=#{address}</if></trim>
</select>

一对多映射 collection(一个班级有多少学生)

伪代码:

select grade.*,student.*
from grade join student
on grade.id = student.class_id
​
Grade{//一对多List<Student> list;
}
​
Student{//一对一Grade grade;
}

代码:

pojo包Student类

​​​​​​​@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {private Integer studentId;private String name;private Integer classId;
}

 pojo包Grade类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Grade {private int id;private String gradeName;private String address;//一对多关联private List<Student> list;
}

####

Sercvice接口

//一对多映射
public List<Grade> query();

 sql映射文件

映射的property是javabean定义的映射SQL的属性,column是SQL对应的列表名

<!--
//一对多映射
public List<Grade> query();
-->
<select id="query" resultMap="map2">select grade.id,grade.grade_name,grade.address,student.student_id,student.name,student.class_idfrom grade join studenton grade.id = student.class_id
</select>
<resultMap id="map2" type="Grade"><!--手动指定列名和属性名的映射关系--><!--主键--><id property="id" column="id"></id><!--非主键 普通属性--><result property="gradeName" column="grade_name"></result><result property="address" column="address"></result><!--集合属性 一对多映射 --><collection property="list" ofType="Student" autoMapping="true"><id column="student_id" property="studentId"></id></collection>
</resultMap>

一对一 association

作业

1、自己创建一个新的项目,实现springboot和mybatis的整合(面试题)

2、动态sql相关的标签都有哪些?各自的作用是什么(面试题)

场景核心标签关键点
批量新增<foreach> + <trim>遍历集合、处理逗号
动态查询<where> + <if> + <choose>条件分支、避免 WHERE AND 语法错误
动态修改<set> + <if>仅更新非空字段、去除末尾逗号
  • <where> 标签       添加where关键字,去除紧邻的 and 或者 or
  • <if> 标签               动态判断 test=""
  • <foreach>标签      循环 collection=“list” item="obj" index="index"——collection属性接收集                                    合、item指定集合中属性名、index指定索引下标的名字
  • <trim>标签            代替where和set
                                  prefix="where" prefixOverrides="and|or"
                                  ——prefix=“”是代替某个标签、prefixOverrides=“”是去除重复的                                                prefix="set" suffixOverrides=","
                                  ——suffixOverrides=“,”是去除最后的逗号
  • <set>标签             动态更新 去除最后的 ,
  • <choose> <when> <otherwise> case-when 选择一个条件执行

3、分页插件如何实现?(面试题)

见四、分页

4、如何实现一对多映射(先缓缓,放到最后,明天还会再讲一遍)


文章转载自:

http://pw7Eq3s7.scjtr.cn
http://NvNBGoRV.scjtr.cn
http://Q2DKBC9P.scjtr.cn
http://xpYffKMp.scjtr.cn
http://uuoW9B76.scjtr.cn
http://7dULxASl.scjtr.cn
http://ErAHeAHu.scjtr.cn
http://GxirqSvx.scjtr.cn
http://QyemJ0SJ.scjtr.cn
http://m9BnU6av.scjtr.cn
http://V9SJ6AfQ.scjtr.cn
http://pSgd73rU.scjtr.cn
http://Yu8Uerhm.scjtr.cn
http://upU5czlb.scjtr.cn
http://dtkOdI08.scjtr.cn
http://6MML89gj.scjtr.cn
http://W6cd1iAl.scjtr.cn
http://0zQHXNMd.scjtr.cn
http://mEzyToEY.scjtr.cn
http://0gqFCLhI.scjtr.cn
http://Tt6vj2ML.scjtr.cn
http://QUGjn6Yb.scjtr.cn
http://F1TFB8K8.scjtr.cn
http://T9jJ752W.scjtr.cn
http://8wq9QkOR.scjtr.cn
http://Z3BaovKJ.scjtr.cn
http://szLdES3t.scjtr.cn
http://Ucc4yW1M.scjtr.cn
http://7vawCrrH.scjtr.cn
http://LnMSzPoV.scjtr.cn
http://www.dtcms.com/wzjs/711925.html

相关文章:

  • 茌平网站建设公司电视台网站建设
  • 长春免费建站怎样设计一个网页页面
  • 做电影网站要多少钱货源网
  • 政务网站建设信息公司直招的招聘网站
  • 引擎搜索网站模板网站模板制作
  • 怎么找出网站的备案号网站建设与排名
  • 网站建设教程(项目式)123上网之家网址
  • 做论坛网站需要多少钱公众号文案里怎么做网站链接
  • 龙岩市官方网站智能手机软件开发
  • 建设网站的调研报告青岛市黄岛区城市建设局网站
  • 有专门做食品的网站吗重庆在线高校
  • 网站怎么做交易子域名大全查询
  • 海南建设网站公司怎么在Front做网站
  • 个人网站建站指南网页界面设计特点
  • 电子商务网站建设服务模式论文兰州网站建设方案详细
  • 网站设计结构郑州高新区建设环保局网站
  • 阿里巴巴网站建设的态度虚心鞍山人才网站
  • 美容北京公司网站建设天元建设集团有限公司鲁班奖
  • 手工品外贸出口网站建设方案制作网站软件手机
  • 东莞专业网站制作设计网站建设维护员
  • 东莞优化seo网站关键词优化北京电力交易中心有限公司
  • 北京长空建设有限公司网站公司没有备案了网站
  • 教学网站模板网络推广代理平台
  • 企业网站管理系统 才能湖南岚鸿wordpress实时刷新模块
  • 网站栏目怎么做WordPress443端口免备案
  • 如何在网站上推广自己的链接立白内部网站
  • 青岛免费模板建站常州建设网站代理商
  • thinkphp做网站教程wordpress获取当前分类名
  • 网站代码输入完成之后要怎么做asp网站浏览器兼容
  • python 营销型网站建设企业注册名字查询