赞
踩
在pom.xml文件中添加依赖
<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>
新建一个application.yml文件
# 注释 springboot主配置文件 #yml基本语法 student: name: zhangsan sex: nan spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/easydata #配置mybatis的数据源 DataSource mybatis: mapper-locations: classpath:mapper/*.xml logging: level: com.easy.dao: debug
1.配置了MyBatis的数据源(DataSource),包括用户名、密码、驱动类名和数据库连接URL。
2.指定了MyBatis的mapper文件路径,使用通配符*.xml表示所有以xml结尾的文件。
3.设置了日志级别,将com.easy.dao包下的日志输出级别设为debug,以便在调试时输出更多详细信息。
ORM (Object Relational Mapping) 是一种编程技术,用于实现面向对象编程语言与关系型数据库之间的数据转换。ORM 的主要目的是允许开发人员以面向对象的方式操作数据库,而不需要直接编写 SQL 语句。
ORM 的关键概念包括:
对象与表的映射:
常见 ORM 框架:
<!--#与$区别 拼接字符串 #{} 预编译,--><!-- 预编译 # 将SQL语句的语义确定之后,无论传递任何参数都不会改变SQL语句语义, 可以有效防止AQL注入也可以加快批处理的效率-->
$
符号当使用 $
符号时,MyBatis 会将参数值直接插入到 SQL 语句中。这种方式类似于传统的字符串拼接方法,即使用 ${}
表达式。
<select id="selectUser" parameterType="int" resultType="User"> SELECT * FROM user WHERE username = ${username} </select>
这种情况下,如果 username
的值为 'admin'
,生成的 SQL 将是:
SELECT * FROM user WHERE username = 'admin'
使用 $
符号的主要问题在于它不会对输入值进行预编译,因此容易导致 SQL 注入攻击。
#
符号当使用 #
符号时,MyBatis 会将参数值以预编译参数的方式插入到 SQL 语句中。这种方式使用 ${}
或 #{}
表达式,并且更安全。
<select id="selectUser" parameterType="int" resultType="User"> SELECT * FROM user WHERE username = #{username} </select>
这种情况下,如果 username
的值为 'admin'
,生成的 SQL 将是:
SELECT * FROM user WHERE username = ?
并且 username
的值 'admin'
会被作为预编译参数传递给数据库。这有助于防止 SQL 注入攻击,并提高 SQL 语句执行的效率。
- package com.easy.bean;
-
- import org.springframework.core.SpringVersion;
-
- import java.math.BigDecimal;
-
- public class Staff {
- private int id;
- private String code;
- private String name;
- private BigDecimal salary;
- private String username;
- private String userpass;
-
- 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;
- }
-
- public BigDecimal getSalary() {
- return salary;
- }
-
- public void setSalary(BigDecimal salary) {
- this.salary = salary;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getUserpass() {
- return userpass;
- }
-
- public void setUserpass(String userpass) {
- this.userpass = userpass;
- }
- }

接着,我们创建一个DAO接口IStaffDao,它定义了对Staff表的操作方法,增删改。
- package com.easy.dao;
-
- import com.easy.bean.Staff;
- import org.apache.ibatis.annotations.Mapper;
-
- @Mapper
- public interface IStaffDao {
- String getNow();
-
- int addStaff(Staff staff);
-
- int delStaff(int id);
-
- int editStaff(Staff staff);
- }
然后,我们创建对应的Mapper XML文件,定义具体的SQL语句。如果SQL语句直接在接口中定义也可以省略此步。注意:如果你在IStaffDao接口中使用的注解来编写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.easy.dao.IStaffDao">
- <!-- 在这里写SQL语句-->
- <select id="getNow" resultType="string">
- select now()
- </select>
-
- <insert id="addStaff">
- insert into staff(code,name,salary,username,userpass)
- value(#{code},#{name},#{salary},#{username},#{userpass})
- </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>
-
-
- <!-- 预编译
- # 将SQL语句的语义确定之后,无论传递任何参数都不会改变SQL语句语义,
- 可以有效防止AQL注入
- 也可以加快批处理的效率-->
-
- <!--#与$区别
- 拼接字符串
- #{} 预编译,-->
-
-
- </mapper>

4. 创建控制器类 (Controller) (EasyController.java)
最后,我们创建一个控制器类EasyController,用来处理HTTP请求,并通过注入IStaffDao来完成实际的数据操作。
- package com.easy.controller;
-
- import com.easy.bean.Department;
- import com.easy.bean.Staff;
- import com.easy.dao.IStaffDao;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
-
- import java.math.BigDecimal;
-
- @RestController
- public class EasyController {
-
- @Autowired
- IStaffDao dao;
- @GetMapping("now")
- public String now(){
- return dao.getNow();
- }
-
- @PostMapping("staff")
- public String addStaff(Staff staff){
- // Staff staff=new Staff();
- // staff.setCode("1001");
- // staff.setName("李思思");
- // staff.setSalary(new BigDecimal(2000));
- // staff.setUsername("lisisi");
- // staff.setUserpass("1234");
- dao.addStaff(staff);
- return "添加成功";
- }
-
-
- @DeleteMapping("staff/{id}")
- public String delStaff(@PathVariable int id){
- dao.delStaff(id);
- return "删除成功";
- }
-
- @PutMapping("staff")
- public String editStaff(Staff staff){
- dao.editStaff(staff);
- return "修改成功";
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。