前言:
之前我们了解到MySQL。接下来了解一下MyBatis,它不是一种数据库,那是什么呢和数据库有什么联系了?
目录
一:MyBatis的定义
MyBatis用于简化Java应用程序与关系型数据库之间数据交互的持久化框架(将应用程序与其使用和操纵的数据源分离),提供了一种将SQL查询映射到Java对象上的方法,使得开发人员可以更加方便地对数据库进行操作。通过简单的XML或注解来配置和映射原始类型,接口,JAVA对象为数据库中的记录。
下图是后端调用MyBatis的过程
二:MyBatis的创建
2.1:创建SpringBoot的项目
2.2:添加MyBatis依赖
2.3:配置连接字符串和MyBatis
MyBatis.xml是在resources/mapper创建所有表的xml文件
三:MyBatis的简单使用
3.1:准备工作
1.根据数据库建立一个用户实体类,用户属性和数据库字段一一对应。
2.添加mapper接口。
3.添加UserMapper.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.example.demo.Mapper.UserMapper">
</mapper>
3.2:单表查询
1.在UserMapper.xml中添加SQL查询语句
3.2.1:查询表中的所有信息
2:添加Service(服务层)
@Service //服务层标签
public class UserService {
@Resource //属性注入 将UserMapper放入到Spring容器中
private UserMapper userMapper;
public List<User> getAll(){
return userMapper.getAll();
}
}
3.添加Controller(控制层)
@RestController //@ResponseBody+@Controller
//@ResponseBody 返回的Body不是html页面,是JSON字符串
@RequestMapping("/u") //类似servlet中的 @WebService("/u"),指定路径
public class UserControl {
@Autowired //属性注入 将UserService存储到Spring容器中
private UserService userService;
@RequestMapping("/getall")
public List<User> getAll(){
return userService.getAll();
}
}
以上就完成了单表的查询,但如果想在控制台上打印SQL语句,还需要在配置文件中添加
logging.level.com.example.demo=debug mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3.2.2:根据字段进行查询
在Mapper接口中添加接口方法
List<User> getById( @Param("id") Integer id); 这里的@param注解 是给参数命名 1.使用#{}
2.使用${}
从上图看出来#{}和${}的区别了吗?
#{}是占位符,而${}是直接替换。
而${}存在不安全隐患(SQL注入)而SQL注入:通过莫种方式将恶意的SQL代码添加,然后传递到SQL服务器使其解析并执行。(使用一些语句得到原本得不到的结果)
举个栗子:
当我传入一个 String username=" 'or '1=1";这时候使用${}
数据库中是没有" 'or '1=1这个用户名的,但是却查到userinfo这个用户表的信息。这个就是SQL注入,存在安全隐患。
当类的属性和数据库中的字段不一样的时候
就将该类的属性设置成这个类型的默认值,那这时候我们改怎么弄了?
使用resultMap
3.2.3:模糊查询
3.3:单表删除
3.4:单表修改
3.5:单表插入
总结:
以上就是我总结的MyBatis的单表使用,若有错误或不足的地方,希望各位铁子留言纠错,若感觉不错,请一键三连。