mybatis的简单实现1

1、环境的搭建

1、创建maven和resources的环境

  • 第一步:在环境变量中设好maven的路径:如图
    在这里插入图片描述

  • 第二步:在maven路径的conf文件夹下打开settings.xml,然后在55行和146行分别设置本地仓库以及镜像,如图:在这里插入图片描述在这里插入图片描述

  • 配置IDEA中Maven的环境在这里插入图片描述
    在这里插入图片描述

什么是mybatis?

mybaits的别名

当类的地址太长或者其它的原因,可以在mybatis全局环境(mybatis_config.xml)配置,对该地址进行取别名:

	<!--类的别名配置区域-->
	<typeAliases>
		<!--
		 设置com.sc.pojo.Dept的别名为dept,通过dept代替它。
		 通过设置别名emp代替com.sc.pojo.Emp
		-->
		<typeAlias type="com.sc.pojo.Dept" alias="dept" />
		<typeAlias type="com.sc.pojo.Emp" alias="emp" />
		<typeAlias type="com.sc.pojo.EmpDept" alias="empDept" />
	</typeAliases>

mybatis的映射配置:

在mybatis的全局环境(mybatis_config.xml)配置中设置,

	<!--配置映射文件-->
	<mappers>
		<!-- 把映射文件放到配置映射文件中 -->
		<mapper resource="mappers/DeptMapper.xml" />
		<mapper resource="mappers/EmpMapper.xml" />
	</mappers>
</configuration>

mybatis的一对一,一对多,多对一,多对多

一对一:查询的数据库中的一个字段和对应类中的一个属性相对应,当类中的属性名和数据库中的字段名不匹配时,就需要进行一一映射。

  <!--
        当数据库列名和类的属性名不一致,需要使用resultMap,
        来实现映射关系,将类的属性no映射到数据中deptno,name映射
        到数据库中deptname;
        type表示返回的类型问题,这里dept的表示是别名。
    -->
    <resultMap id="deptMapper" type="dept">
        <!--
            id用来配置主键,column是数据库表中列的名字,
            property是类中成员变量的名字,
        -->
        <id column="deptno" property="no" />
        <!--
            其他的字段使用的result
        -->
        <result property="name" column="dname" />
    </resultMap>

    <select id="getDepts2" resultMap="deptMapper">
        select * from dept
    </select>
一对一的情况下,如果类中的属性名name和数据库中的字段名dname不一致,要接收数据库的字段dname的
数据,就需要进行resultMap映射结果到类名的属性名name上。

一对多:在查询中,一个主键关联了多个外键,通过这个主键值获取所有与之有关外键的信息,这样就是属于一对多的情况下,
DeptMapper.xml中的代码:

    <!--
        多表查询:
        多表查询利用了结果映射来实现多表查询。
         在dept表中拥有empSet的对象字段名,通过empSet对象可以接收到在
        另一张表中查询到的所有数据。
        在column="deptno",它对应dept表中的deptno
        来匹配emp表中的数据,
        select表示需要映射的需要执行的地址,在某个.xml中namespace="com.sc.pojo.Emp"下
        找到getEmpsByDeptno的数据。
         <collection property="empSet" column="deptno"
                    select="com.sc.pojo.Emp.getEmpsByDeptno">
        </collection>
    -->
    <resultMap id="deptMapper3" type="dept">
        <id column="deptno" property="no" />
        <result property="name" column="dname" />

        <collection property="empSet" column="deptno"
                    select="com.sc.pojo.Emp.getEmpsByDeptno">

        </collection>
    </resultMap>

    <select id="getDept2" resultMap="deptMapper3">
        select * from dept
    </select>


/************************************************************************/
/* 这是多对一的情况,它的返回值是dept类型,它放置的位置是dept*/
    <resultMap id="deptMapper4" type="dept">
        <id column="deptno" property="no" />
        <result property="name" column="dname" />
    </resultMap>

    <select id="getDeptByNo" parameterType="int" resultMap="deptMapper4">
        select * from dept where deptno = #{deptno}
    </select>


多对一:查询语句,如果需要实现多个外键关联另一张表中的主键,那么通过该外键获取到主键的所有信息,情况如下显示:



/* 这是是实现了一对多的代码,它是通过传递过来的参数查询语句,他返回的类型是emp,它放置的位置是empSet字段*/
    <select id="getEmpsByDeptno"
            parameterType="int" resultType="emp">
        select * from emp where deptno = #{deptno}
    </select>

/*****************************************************/


    <!--
        <association property="dept" column="deptno"
                     select="cad.getDeptByNo" />
        association表示映射,多行数据对应单行数据进行使用的,
        当一个部门对应多个员工,通过员工来查询部门表时,
        使用映射关系,association。这个映射关系可以通过column
        的值传递到需要识别的表上对应匹配信息,其中deptno是emp表
        中的字段信息。
    -->
    <resultMap id="empMapper" type="emp">
        <association property="dept" column="deptno"
                     select="cad.getDeptByNo" />
    </resultMap>
    <select id="getEmpByName" resultMap="empMapper"
            parameterType="string">
        select * from emp where ename like
        concat('%',concat(#{ename},'%'))
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值