1,ORM思想
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
应用ORM思想的框架:Mybatis,Hibernate
总结:以对象的方式操作数据库
2,MybatisPlus实现原理
分析问题的本质:
1),对象—属性
2),表—字段
2.1 对象和表如何关联? 利用自定义注解
2.2 如何实现CRUD方法的简化? 定义一个公共的Mapper接口,其中添加CRUD方法
2.3 需要将对象转化为sql语句 利用特定的语法进行转化
3,MybatisPlus入门案例
1,添加依赖jar包
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.2version>
dependency>
2,在yml文件中配置mybatis-plus
#spring整合mybatisplus
mybatis-plus:
#定义别名包 作用:以后封装pojo对象时会自动进行拼接
type-aliases-package: com.jt.pojo
#映入mapper配置文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
3,pojo包的实体类中添加注解
package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@TableName("user")//引入表格
public class User implements Serializable {
//规则 如果属性名和字段名一致(包含驼峰规则),则可以不写,
// 例@TableField(value = "name")等就可以不写了
@TableId(type = IdType.AUTO)//标识主键 且主键自增
private Integer id;
//@TableField(value = "name") 可省略不写
private String name;
//@TableField(value = "age")
private Integer age;
//@TableField(value = "sex")
private String sex;
}
4,继承公共的Mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
//@Mapper //为接口创建代理对象 交给spring管理
//BaseMapper 继承该父类接口一定要写泛型
public interface UserMapper extends BaseMapper<User> {
List<User> findAll();
}
5,查询数据测试
@Test
void testMP(){
//单表计划不写sql
List<User> all = userMapper.findAll();
//查询所有user表数据 不写where条件
List<User> users = userMapper.selectList(null);
System.out.println(all);
System.out.println(users);
}
6,新增数据测试
@Test
void insert(){
User user=new User();
user.setName("MP测试新增").setAge(20).setSex("nan");
userMapper.insert(user);
}
MybatisPlus动态拼接SQL原理说明:
对象: 关联的数据表|关联的表字段.
数据库执行: Sql语句.
java基础: 反射机制
分析:
当执行insert方法时,MybatisPlus框架会创建插入sql语句:
insert into 表名(字段名) value(插入值);
userMapper.insert(user)中传入的对象是user,而user是User的实例化对象,因此会得到User类上的注解@TableName(“user”),进而得到"表名"为user,此时SQL语句中的表名就得到了;
同时也可以得到注解@TableField,从而获取到表中的“字段名”name、age及sex,此时的sql语句为:
insert into user(name,age,sex) value(插入值);
拿到具体的属性后,可以通过属性提供的get方法获取到具体的属性值,也就是需要的“插入值”,此时的sql语句为:
insert into user(name,age,sex) value(user.getName,user.getAge,user.getSex);
此处具体为insert into user(name,age,sex) value(“MP测试新增”,20,“nan”);
到此就完成了动态SQL的拼接,完成上述操作后交给Mybatis处理就可以了。
以上,仅供学习参考