网站备案logo,wordpress网站样式,网页制作公司文案,哔哩哔哩网页版入口Mybatis映射
什么是映射器
MyBatis的映射器就是用来解决这一问题#xff0c;映射器其实是一个Interface接口,我们通过编写简单的映射器接口#xff0c;就可以将我们之前在Dao中做的重复的#xff0c;看起来比较低级的代码给替换掉。也就是说我们以后不用向之前那样写代码映射器其实是一个Interface接口,我们通过编写简单的映射器接口就可以将我们之前在Dao中做的重复的看起来比较低级的代码给替换掉。也就是说我们以后不用向之前那样写代码而是直接调用映射器接口即可完成SQL的调用。我们可以理解为 这个映射器 底层使用了动态代理的方式将复杂的代码进行了处理屏蔽了细节。--- 如同JPA的接口
创建domain
public class Employee{private Long id;private String username;private Integer age 0;private Boolean sex;//...
}
创建接口映射器
创建实体类接口我们一般给接口命名 XxxMapper ,如 EmployeeMapper 跟EmployeeMapper.xml同名。
import java.util.List;public interface EmployeeMapper {int insert(Employee employee);int updateById(Employee employee);int deleteById(Long id);Employee selectById(Long id);ListEmployee selectAll();
}
创建SQL映射文件
SQL映射文件的namespace必须和 映射器接口的全限定名一直这个非常重要因为我们在调用映射器接口的时候底层是通过该接口的 全限定名方法名 去匹配 SQL映射文件的namespaceid。
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespaceorg.test.mybatis._02_mapper.mapper.EmployeeMapperresultMap idbaseResultMap typeorg.test.mybatis._02_mapper.domain.Employeeid columnid propertyid /result columnusername propertyusername/result columnage propertyage/result columnsex propertysex//resultMapselect idselectAll resultMapbaseResultMap selectid,username,age,sexfrom employee/select
/mapper
注意这里是另外一个Mapper对应的是Employee所以所有的 有用到实体类的地方都要使用Employee的全限定名。
再次强调底层是通过映射器接口的 全限定名方法名 去匹配 SQL映射文件的namespaceId所以 namespace 需要和 映射器接口的全限定名一致 sql的id必须和 映射器的 方法名一致。
这里暂时写了一个查询所有的方法同学们自行完成其他的几个方法
注册Mapper
修改mybatis-config.xml文件添加mappers , 注意修改成自己的路径
mappersmapper resourceorg/test/mybatis/mapper/ProductMapper.xml/mapper resourceorg/test/mybatis/mapper/EmployeeMapper.xml/
/mappers
实现CRUD
Test
public void selectAll() {try(SqlSession sqlSession MyBatisUtil.openSession()){EmployeeMapper employeeMapper sqlSession.getMapper(EmployeeMapper.class);employeeMapper.selectAll().forEach(e -{System.out.println(e);});}}
写在最后:mybatis花了较多文章来写因为其十分重要。后续将分享高级SQL的相关知识笔者小中大厂均有面试经历坚持每日分享JAVA全栈知识希望能够和大家共同进步。