mybatis映射器用法

映射器的使用:
半自动化的体现                                                                     
配置 SQL 语句,体现了半自动化                                                                
和灵活性。 
ORM 的体现   
对象关系映射的实现,数据库表
POJO 类的映射关系。
映射器与接口
<?xml version="1.0" encoding="uft-8"?>
<!DOCTYPE mapper
   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd>
<mapper namespace="dao.Mapper">
    <select id="get" resultType="pojo.News">    
        select * from 'news'
    </select>
</mapper>
package dao;
import pojo.News;

public interface Mapper{

    public News get();

}
映射器配置文件和接口绑定:配置文件名对应接口名,id 属性值对应方法名。
映射器的组成
                                                        映射器的组成
映射器
SQL语句映射关系
<select><insert><delete><update><sql><parameterMap><resultMap>

MyBatis映射器方法的分类

        1.sqlMapper.xml的映射;

        2.注解的映射;

        3.sqlMapper和注解的混合使用

使用sqlMapper注解的步骤

01引入mybatis-config.xml配置文件  该配置文件主要是连接数据库所需的配置信息
02引入Mapper映射文件 配置SQL语句和映射的配置文件
03创建MyBatisUtil类   用来创建MyBatis的数据库SqlSession会话类
04创建SqlSession类访问数据库 创建SqlSession后,利用SqlSession访问数据库
05输出结果   查询所需的数据库的信息,并输信息。

1.1在src下面添加mybatis-config.xml文件,并创建SqlMapper.xml和Mapper文件并放在同一包下,其中SqlMapper.xml文件中的id唯一且和Mapper接口文件中的方法名相同

 

 

 1.2在SqlMapper.xml文件中,各个元素的映射

select 元素结构
        
<select id = "get" resultType="pojoNews">
    select * from student
</select>
属性说明
id唯一标识,接口中的方法名
parameter参数的类型
resultType结果的类型
resultMap复杂的结果集映射关系

参数的传递

xml文件中     配置文件中利用 parameterType 属性设置参数类型,利用
#{}设置参数的使用及位置。
接口中      接口中,按照方法的入参方式指定参数类型和参数名称。
多个参数传递
方法1:Map 方式
XML 配置文件:
参数的类型使用Map
方法2:JavaBean 方式
XML 配置文件:
参数的类型使用类做为参数
insert 元素结构
属性说明
id
唯一标识,接口中的方法名;
parameterType
参数的类型;
keyProperty
表示以哪个列作为属性的主键,不能和 keyColumn 同时使用;
keyColumn
指明哪一列是主键,不能和 keyProperty 同时使用;
useGeneratedKeys
使用 JDBC 的 getGeneratedKeys 方式来取有数据库内部生成的主键;
主键回填

 

功能
当主键在数据库中为自增字段时,新增成功后,回
填主键。
<mapper namespace="dao.Mapper">
    <insert id="add" parameterType="News"
    useGeneratedKeys="true" keyProperty="newsId">
    insert into News(title) values(#{title}}
    </insert>
</mapper>
自定义主键生成规则
<selectKey>
用来预先设定主键值。自定义主键生成规则时,可以使用该标签;
order 属性:
取值 BEFORE AFTER ;
resultMap 元素
表的结构:
create table schoolmaster(
smid int PRIMARY KEY auto_increment,
sm_name varchar(10) ,
smsex varchar(2)
);
insert into schoolmaster(sm_name,smsex) values('老刘','男');
public class SchoolMasters{
    private int smid;
    private String smname;
    private String smsex;}
表名和字段名不一致
010203
定义映射规则
ORM 的特性,POJO 类和数据
库的映射关系;
级联操作
多表存在主外键关系时,主表和
从表之间的关联操作;
类型转换
数据库字段的类型和 POJO 类
属性的类型转换。

 resultMap 元素的结构

<resultMap>
<constructor>
<idArg />
<arg />
</constructor>
<id />
<result />
<association />
<collection />
<discriminator>
<case />
</discriminator>
</resultMap
1
用于配置构造方法的元素。
<constructor>
2
标识主键列,允许多个主键。
<id>
3
POJO 到 SQL 列名的映射关系。
<result>
使用 POJO 存储结果集
<resultMap type="pojo.News" id="newsResultMap">
        <id property="newId" column="news_id" />
    <result property="title" column="title" />
    <result property="author" column="author" />
</resultMap>
说明:
type 代表需要映射的 POJO 类;
id 是 resultMap 的唯一
属性
说明
property
映射到列结果的字段或者属性,通常是指 POJO 的属性;
column
对应的数据库字段;
javaType
Java 类型,可以是基本数据类型,也可以是类完全限定名;
jdbcType
JDBC 的类型,基本支持所有常用的数据库类型;
多表联查
级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率
一对一
一个对象对应唯一的对象,
举例:中国公民和身份证;
一对多
一个对象对应多个对象,
举例:班级和学生;
多对多
多个对象对应多个对象,
举例:公司角色和公司员工
一对一级联步骤
验证
编写测试类验证级联关系;
级联映射
利用 <association> 元素完
成一对一级联;
创建映射器
创建对应的映射器;
创建关联POJO
一对一级联时,以对象方式存
储关联关系;
一对多级联步骤
创建”一“方POJO
以集合的形式级联“多”方对
创建“多”方对象
创建“多”方的 POJO 对象
创建映射器
创建对应的映射器
实现一对多级联
利用 collection 元素实现一
对多的级联
测试
编写测试文件测试一对多级联
级联的缺陷
性能缺陷
级联操作会降低性能,
增加程序的执行时间;
复杂度缺陷
关联较多造成复杂度的
增加,不利于他人的理
解和维护;
使用建议
1.根据实际情况增加级联关系;
2.多层关联式,建议超过三层关联时尽量少用级联

mybatis的常用注解

@Insert    实现新增
@Delete    实现删除
@Update    实现更新
@Select    实现查询
@Result    实现结果集封装
@Results    可以与@Result 一起使用,封装多个结果集
@ResultMap    实现引用@Results 定义的封装
@One    实现一对一结果集封装
@Many    实现一对多结果集封装
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值