8月5日SpringBoot学习笔记

今日内容:搭建mybatis   ORM    配置数据源   $#的区别    增删改查


搭建mybatis

        在原有maven项目基础配置上进行:

pom文件添加依赖

<!-- Mybatis -->
	<dependency>
	    <groupId>org.mybatis.spring.boot</groupId>
	    <artifactId>mybatis-spring-boot-starter</artifactId>
	    <version>2.2.2</version>
	</dependency>
    <dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.26</version>
	</dependency>

在resources文件夹创建Application.yml文件下配置数据源

# spring boot的主配置文件
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
#spring.mvc.view.prefix: /html/
#spring.mvc.view.suffix: .html
#配置mybatis的数据源 DataSource
spring: 
  datasource: 
    url: jdbc:mysql://localhost:3306/easydata
    username: root
    password: tcwjy2021
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  mapper-locations: classpath*:/mapper/*.xml
#配置后,MyBatis在初始化时会自动扫描并加载这些XML文件,使你可以利用其中定义的SQL映射语句和操作。
#debug日志打印在控制台
logging:
  level:
    com.easy.dao: debug
    
    

ORM对象关系映射

ORM 的工作原理:
  1. 映射配置:通过注解或XML配置文件,定义类与数据库表之间的映射关系。
  2. 会话管理:创建与数据库的会话,管理事务和缓存。
  3. 数据访问:通过ORM框架提供的方法或查询构建器来查询和操作数据。
  4. 数据持久化:将对象状态同步到数据库,包括创建、更新和删除操作。
<?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.easy.dao.IStaffDao">
	<!-- 这里写sql语句  和接口对应  id对应方法名 -->
	<select id="getNow" resultType="string">
		select now()
	</select>
	
	<!-- '${}'把值放入     #{}把值和类型放入(先确定类型,然后放入值)     并且可以防止sql注入 )-->
	<!-- 预编译,将sql语句确定,之后无论传递任何参数都不会改变sql语句语义,可以有效防止sql注入 -->
	<!-- 也可以加快批处理的效率,编译好一次一直执行就行 -->
	<!-- sql语句执行分为两个过程  编译和执行指令 -->
	<insert id="addStaff">
		insert into staff(code,name,salary,username,password) 
		value(#{code},#{name},#{salary},#{username},#{password})
	</insert>
	
	<delete id="delStaff">
		delete from staff where id=#{id}
	</delete>
	
	<update id="editStaff">
		update staff set name=#{name}, salary=#{salary},username=#{username},userpass=#{userpass}
		where id=#{id};
	</update>
	
</mapper>
$#的区别

    1.在Spring框架中,${} 还用于属性文件的占位符替换,而 #{} 用于表达式语言(SpEL)。在MyBatis中,${}#{} 的作用与Spring不同,专门用于SQL语句的构建和参数处理。

    2.sql语句执行分为两个过程:编译和执行指令, '${}'直接把值放入然后编译,存在sql注入风险;#{}将#{}中的参数与SQL语句一起发送到数据库,数据库会根据参数的实际类型来处理它们,可以防止sql注入 。


预编译好处

        利用预编译,将sql语句确定,之后无论传递任何参数都不会改变sql语句语义,可以有效防止sql注入;也可以加快批处理的效率,编译好一次一直执行就行 。
 

简单的增删改查实现

bean包下实体类

package com.easy.bean;

public class Department {

	private int id;
	private String code;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

mapper包下定义SQL映射

<?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.easy.dao.IDepartmentDao">

	<insert id="addDepartment">
		insert into department(code,name) 
		value(#{code},#{name})
	</insert>
	
	<delete id="delDepartment">
		delete from department where id=#{id}
	</delete>
	
	<update id="editDepartment">
		update department set name=#{name}
		where id=#{id};
	</update>
	
	<select id="selectDepartment" resultType="com.easy.bean.Department">
		select * from department where id=#{id} 
	</select>
</mapper>

dao(Data Access Object"(数据访问对象))包下定义数据访问接口

package com.easy.dao;

import org.apache.ibatis.annotations.Mapper;

import com.easy.bean.Department;

@Mapper
public interface IDepartmentDao {

	int addDepartment(Department dep);
	int delDepartment(int id);
	int editDepartment(Department dep);
	Department selectDepartment(int id);
}

controller包下定义控制类

controller层接收前台参数时:

       1. 使用 Map 传递参数会导致业务可读性的丧失,继而导致后续扩展和维护的困难,所以在实际应用中我们应该果断废弃该方式。

        2.使用 @Param 注解传递参数会受到参数个数的影响。当 n≤5 时,它是最佳的传参方式,因为它更加直观;当 n>5 时,多个参数将给调用带来困难。

        3.当参数个数大于 5 个时,建议使用 JavaBean 方式。

package com.easy.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.easy.bean.Department;
import com.easy.dao.IDepartmentDao;

@RestController
@RequestMapping("department")
public class DepartmentController {
	@Autowired
	IDepartmentDao dao;
	@PostMapping
	public String addDepartment(@RequestBody Department dep) {
		dao.addDepartment(dep);
		return "Add sucess";
	}
	@DeleteMapping("{id}")
	public String delDepartment(@PathVariable int id) {
		dao.delDepartment(id);
		return "DEL sucess";
	}
	@PutMapping
	public String editDepartment(@RequestBody Department dep) {
		dao.editDepartment(dep);
		return "EDIT sucess";
	}
	@GetMapping("{id}")
	public Department selectDepartment(@PathVariable int id) {
		return dao.selectDepartment(id);
	}
}

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以和你分享一些关于Spring Boot学习笔记。 1. Spring Boot是什么? Spring Boot是一个基于Spring框架的快速开发框架,它能够帮助开发者快速搭建Spring项目,简化了Spring应用开发的繁琐过程,提高了开发效率。 2. Spring Boot的优点有哪些? Spring Boot的优点有很多,其中包括: - 简化了Spring应用的开发,提高了开发效率; - 集成了很多常用的第三方库,减少了依赖管理的工作; - 自动化配置,减少了配置文件的编写工作; - 内嵌了Tomcat等Web容器,使得应用的部署更加便捷; - 提供了Actuator等模块,使得应用的监控和管理更加便捷。 3. Spring Boot的核心注解有哪些? Spring Boot的核心注解包括: - @SpringBootApplication:标注在启动类上,代表这是一个Spring Boot应用; - @Controller:标注在控制器类上,处理HTTP请求; - @Service:标注在服务类上,用于处理业务逻辑; - @Repository:标注在数据访问类上,用于数据库访问; - @Configuration:标注在配置类上,用于配置Spring应用上下文。 4. Spring Boot的配置文件有哪些? Spring Boot的配置文件包括: - application.properties:基于Key-Value的属性文件; - application.yml:基于YAML语法的配置文件。 5. 如何使用Spring Boot集成数据库? 使用Spring Boot集成数据库需要完成以下几个步骤: - 在pom.xml中添加相关数据库依赖; - 配置数据源和JPA/Hibernate等相关配置; - 编写实体类和DAO层代码。 以上就是一些关于Spring Boot学习笔记,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值