https://mybatis.org/mybatis-3/zh/getting-started.html
http://www.mybatis.cn/category/sjbt/
https://mvnrepository.com/search?q=mybatis
https://github.com/mybatis/mybatis-3/releases
所有的知识点从官网进行学习与验证,此文档仅拟一个框架丶
准备数据库(见配置文件,未实现SSL连接)
新建maven工程(删除src目录作为父工程,导入依赖)
新建module(maven工程)为子工程
执行流程
插件 pagehelper
插件 Mybatis Plus
插件 Lombok
使用注解开发
关于@Param()
实体类
@Data
public class Student {
private int id;
private String name;
private Teacher teacher;
}
@Data
public class Teacher {
private int id;
private String name;
}
StudentMapper.xml
<mapper namespace="com.hello.dao.StudentMapper">
<!--方式2:按照结果嵌套处理-->
<select id="getStudent2" resultMap="StudentTeacher2">
select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid = t.id
</select>
<!--对象,使用 association-->
<resultMap id="StudentTeacher2" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
<!--方式1:查询所有的学生,按照查询出来的学生的tid,寻找对应的老师 像子查询-->
<select id="getStudent" resultMap="StudentTeacher">
select * from student
</select>
<resultMap id="StudentTeacher" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
<select id="getTeacher" resultType="Teacher">
select * from teacher where id = #{id}
</select>
</mapper>
实体类
@Data
public class Student {
private int id;
private String name;
private int tid;
}
@Data
public class Teacher {
private int id;
private String name;
private List<Student> students;
}
接口
public interface TeacherMapper {
//获取指定老师及其对应所有学生的信息
Teacher getTeacher(@Param("tid") int id);
Teacher getTeacher2(@Param("tid") int id);
}
TeacherMapper.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.hello.dao.TeacherMapper">
<!--方式1:按照结果嵌套查询-->
<select id="getTeacher" resultMap="TeacherStudent">
select s.id sid,s.name sname,t.name tname,t.id tid
from teacher t,student s
where t.id=s.tid and t.id=#{tid}
</select>
<resultMap id="TeacherStudent" type="Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
<!--集合,使用collection 集合中的泛型信息,使用ofType获取-->
<collection property="students" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
<!--方式2:按照查询嵌套处理-->
<select id="getTeacher2" resultMap="TeacherStudent2">
select * from teacher where id=#{tid}
</select>
<resultMap id="TeacherStudent2" type="Teacher">
<!--集合,使用 collection 集合中的泛型信息,使用ofType获取-->
<collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id"/>
</resultMap>
<select id="getStudentByTeacherId" resultType="Student">
select * from student where tid=#{tid};
</select>
</mapper>
一对多&多对一
自定义缓存EhCache(使用方式就是标签配置)
EhCache 是一个`纯Java`的进程内`缓存框架`,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有`内存`和`磁盘`存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
这几个Handler主要用以:处理参数、处理结果集、处理类型转换
根据项目选型来,上手即用
还需要继续迭代
原文:https://www.cnblogs.com/rain2020/p/14002072.html