1.封装两个类Emp和Dept
1.1 Emp类
@Data//set/get/toString/hashCode
@Accessors(chain=true)//开启链试加载
@NoArgsConstructor//无参构造
@AllArgsConstructor//有参构造
class Emp implements Serializable{//实现序列化接口
//封装员工属性
private Intrage empId;
private String empName;
private String empSex;
private Dept depts;//把部门封装到员工中,实现一对一查询
}
1.2 Dept类
class Dept{
private Integer deptId;
private String deptNmae;
}
2.准备EmpMapper接口
public interface EmpMapper{//要映射到xml文件中
List<Emp> findAll();//因为可能查询到多个数据,所以要用几何接收
}
3.创建xml映射文件准备写sql操作数据库
<?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">
<!-- namespace: 表示的就是你要映射的接口-->
<mapper namespace="com.jt.mapper.EmpMapper">
<!-- 编写sql语句-->
<!--这里使用笛卡尔积查询的方式-->
<!--di:表示的是EmpMapper映射的接口中的方法名字,必须要一直,不然会报xml文件映射错误-->
<select id="findAll" resultMap="empRM">
select * from emp e,dept d
where e.dept_id = d.dept_id
</select>
<!--这个id和上面的resultMap的值是相同的
type就是映射的接口对应的类的类名
autoMapping 表示的就是自动封装除主键外的数据-->
<resultMap id="empRM" type="Emp" autoMapping="true">
<!--id表示emp表中的主键 column表示主键字段 property表示封装的Emp中对应主键的属性名-->
<id colum="emp_id" property="empId"/>
<!--association 所关联的Dept那张表 property表示在Emp类中封装的Dept类型的属性名
javaType表示的就是在Emp类中封装Dept的这个类名 -->
<association proper="depts" javaType="Dept">
<id column="dept_id" property="deptId"/>
<!--除主键外的字段-->
<result column="dept_name" property="deptName"/>
</association>
</resultMap>
</mapper>
4.核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- MyBatis核心配置文件-->
<configuration>
<!--这里不再使用
<settings>
<!--开启了驼峰映射规则 dept_id 自动映射到 deptId -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.jt.pojo"/>
</typeAliases>
-->
<!--环境配置标签-->
<environments default="development">
<!--编辑开发环境 id 唯一标识-->
<environment id="development">
<!-- 事务管理器,利用jdbc控制服务-->
<transactionManager type="JDBC"/>
<!-- mybatis采用连接池的方式整合数据-->
<dataSource type="POOLED">
<!-- 高版本的数据库驱动需要添加cj-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--Mybatis加载Mapper映射文件
mapper 映射文件是有顺序的 位置不可可随便切换
通过resource 加载指定的xml映射文件
-->
<mappers>
<mapper resource="mybatis/mapper/EmpMapper.xml"/>
</mappers>
</configuration>
5.创建测试类TestMapper
//测试类
public class TestMapper{
SqlSessionFactory build;
@BeforEach
public void init(){
String resource="mybatis/mybatis-config.xml";//核心配置文件
InputStream inputStream=Resources.getResourceAsStream(resource);
build=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void selectOneToOne(){
SqlSession sqlSession=build.openSession(true);
EmpMapper mapper=sqlSession.getMapper(EmpMapper.class);
List<Emp> list=mapper.findAll();
System.out.println(list);
sqlSesstion.colse();
}
}
6.在数据库创建emp和dept两张表
6.1 emp表中的字段,数据自行添加
6.2dept 表中的字段,数据自行添加
提示:根据个人的业务流程去写,不能局限性,但总体的流程就这几补
** 改天再更新,一对多;多对一;的增删改查以及前后端整合.关注敬请期待!!!**