MyBatis是一款优秀的持久层框架,它支持自定义SQL,存储过程以及高级映射【程序中的类映射到数据库中的表:程序中的字段对应数据库中的字段,通过mybatis建立起联系】。MyBatis去除了几乎所有JDBC代码以及设置参数和获取结果集的工作。简单点说:MyBatis是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具。
ORM【对象关系映射】:把数据库映射为对象
- 数据库(table)--》类
- 记录(record,行数据)-->对象
- 字段(field)--》对象的属性
Java中的一个类相当于数据库中的一张表, Java中的一个实例,相当于表中的一条数据,
Java中的属性对应于表中的字段,可以像操作对象的方式,操作数据库。
如何操作数据库Mybatis?
- 配置MyBatis开发环境
- 使用Mybatis模式和语法操作数据库
MyBatis组成2部分:
- 接口(表的所有操作方法)-》给其他程序类调用的
- XML实现接口
Mybatis的实例
1.构造实体类
package com.example.demo.entity; import lombok.Data; import java.time.LocalDateTime; @Data public class UserInfo { private int id; private String username; private String password; private String photo; private LocalDateTime createtime; private LocalDateTime updatetime; private int state; }
2.构造Mapper层的代码实现
2.1 先创建接口【接口+XML】
package com.example.demo.mapper; import com.example.demo.entity.UserInfo; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper { UserInfo getUserById(Integer id); }
2.2 创建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"> <select id="getUserById" resultType="com.example.demo.entity.UserInfo"> select * from userInfo where id = ${user_id} </select> </mapper>
namespace:xml实现接口的全路径(包名+接口名)
id:实现的方法名
resultType:返回类型
3 实现服务层
package com.example.demo.service; import com.example.demo.entity.UserInfo; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public UserInfo getUserById(Integer id){ return userMapper.getUserById(id); } }
4 实现控制器
package com.example.demo.controller; import com.example.demo.entity.UserInfo; import com.example.demo.service.UserService; import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/getuserbyid") public UserInfo getUserById(Integer id){ if(id == null){ return null; } return userService.getUserById(id); } }