网站和数据库,跨界营销案例,做打折网站如何,wordpress 解析插件一、ORM ORM是“对象关系映射”#xff08;Object-Relational Mapping#xff09;的缩写。这是一种编程技术#xff0c;用于将对象模型与关系型数据库系统之间的数据进行转换。在面向对象的编程语言中#xff0c;数据通常以对象的形式表示#xff1b;而在关系型数据库中Object-Relational Mapping的缩写。这是一种编程技术用于将对象模型与关系型数据库系统之间的数据进行转换。在面向对象的编程语言中数据通常以对象的形式表示而在关系型数据库中数据则以表格的形式存储。
二、配置数据源
spring:#配置mybatis的数据源 DataSourcedatasource:username: rootpassword: 429619driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/easydatamybatis:mapper-locations: classpath:mapper/*.xmllogging:level:com.easy.dao: debug
1.配置了MyBatis的数据源DataSource包括用户名、密码、驱动类名和数据库连接URL。 2.指定了MyBatis的mapper文件路径使用通配符*.xml表示所有以xml结尾的文件。 3.设置了日志级别将com.easy.dao包下的日志输出级别设为debug以便在调试时输出更多详细信息。
三、$#的区别
$ 符号
文本替换 当你在XML映射文件中使用 $ 符号时MyBatis会将它后面的表达式直接替换成对应的值。这种方式类似于简单的字符串替换。
如果 username 的值是 admin OR 11那么最终的SQL语句将会是
SELECT * FROM user WHERE username admin OR 11
# 符号
预编译参数 当使用 # 符号时MyBatis会将它后面的表达式作为预编译语句PreparedStatement的参数。这种方式更加安全因为它会自动处理SQL注入的问题。
将SQL语句的语义确定之后无论传递任何参数都不会改变SQL语句语义可以有效防止SQL注入 也可以加快批处理的效率
类型转换
如果 username 是一个字符串 admin那么最终的SQL语句将会是、
SELECT * FROM user WHERE username ?
四、增删改
1. 创建数据模型类 (Staff.java)
首先我们创建一个数据模型类也就是实体类Staff它对应数据库中的Staff表。
package com.easy.bean;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;}
}2. 创建数据访问对象接口 (IStaffDao.java) 接着我们创建一个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);
}3. 编写Mapper文件 (Staff_Mapper.xml) 然后我们创建对应的Mapper XML文件定义具体的SQL语句
?xml version1.0 encodingUTF-8?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.easy.dao.IStaffDao
!-- 在这里写SQL语句--select idgetNow resultTypestringselect now()/select
!-- 预编译# 将SQL语句的语义确定之后无论传递任何参数都不会改变SQL语句语义可以有效防止SQL注入
也可以加快批处理的效率--insert idaddStaffinsert into staff(code,name,salary,username,userpass)value(#{code},#{name},#{salary},#{username},#{userpass})/insertdelete iddelStaffdelete from staff where id#{id}/deleteupdate ideditStaffupdate staff set name#{name},salary#{salary},username#{username},userpass#{userpass} where id#{id}/update
/mapper4. 创建控制器类 (Controller) (EasyController.java)
最后我们创建一个控制器类EasyController用来处理HTTP请求并通过注入IStaffDao来完成实际的数据操作。
package com.easy.controller;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 {AutowiredIStaffDao dao;GetMapping(now)public String now(){return dao.getNow();}PostMapping(staff)public String addStaff(Staff staff){
// Staff staffnew Staff();
// staff.setCode(10001);
// staff.setName(何容与);
// staff.setSalary(new BigDecimal(10000));
// staff.setUsername(hry);
// staff.setUserpass(123456);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 修改成功;}
}