MyBatis框架 _映射文件详解

1.简介SQL映射

      MyBatis框架是一个基于ORM(onject Relational Mapping , 关系/关系映射)的优秀的持久化框架。但是MyBatis框架不是一个完整的ORM实现,而是一种半自动化的ORM实现。MyBatis框架的主要特点是SQL映射机制。MyBatis框架使用XML注解将Java中的接口POJO(Plain Ordinary Java Object , 普通的Java对象)与SQL语句结合在一起,使用灵活、简单易学,而且性能也很优秀是现在比较流行的框架之一。

那么 什么是SQL映射呢?

        SQL 映射是 MyBatis 框架最具有特色的部分,功能强大且使用简单。

        MyBatis 框架的主要思想是将SQL语句从程序代码中分离出来,对JDBC访问数据库的代码进行封装,从程序中消除了所有SQL参数设置及处理结果集的 JDBC 代码从而大幅度减少数据访问层的编码量。并且SQL语句与代码的解耦,可以最大限度的实现对SQL语句的灵活管理,方便SQL调用以保证性能。

SQL映射文件

               SQL映射文件中的几个顶级元素介绍:

mapperSQL映射文件的根元素。只有一个属性namespace,用于区分不同的mapper,必须全局唯一。
cache为给定命名空间配置缓存。
cache-ref引用其他命名空间中的缓存配置。
resultMap用来描述查询结果集中的字段和Java实体类属性的对应关系。
sql定义可重用的SQL语句块,可以在其他语句映射中引用,提高编写和维护SQL语句的效率。
insert映射insert语句。
update 映射update语句。
delete映射delete语句。
select映射select语句。

MyBatis框架内建的部分名与Java数据类型的映射关系

别名映射类型
boolean    Boolean    
byte    Byte    
long    Long
shorShor
int或integerInteger    
double    Double    
float    Float    
string    String    
bigdecimal或decimalBigDecimal
date    Date    
hashmap    Hashmap    
list    list    
arraylist    ArrayList  


 

MyBatis 的多条件查询


①.将查询条件爱你封装成一格Java对象作为参数

int SelectSysUserList(SysUser sysuser(SysUser作为一个实体类));


②.将查询条件封装成Map对象作为参数

List<SysUser> getUserList(Map<String,Object> userMap)


③.使用@Param注解实现多参数入参

int sysUserListName(@Param("Name")String name);

小结 myBatis一共有三种 方法实现多条件的查询 

2. MyBatis 框架的结果映射

① 首先创建实体类 

public class SysUser implements Serializable {

    private Integer id ;     // id
    private String account ;  //账号
    private String password ; //密码
    private String realName ; //真实姓名
    private String birthday ;   //出生日期
    private int sex ; // 性别
    private String address ;  //地址
    private String phone ;    //电话
    private Integer roleId ;  //角色id
    private Integer createdUserId ; //创建人id
    private String createdTime ;   //创建时间
    private Integer updatedUserId ; //更新人id
    private Date updatedTime ;   // 更新人时间
}

//省略 Getter和 Setter 方法

② 添加方法

然后在 mapper  接口中添加方法 使用 SysUser 类作为参数 使用 realName 作为查询条件

  /**
     * 根据用户的真实姓名模糊匹配查询用户信息
     * @param realName
     * @return
     */
    public List<SysUser> getUsersByRealName(String realName);

③ 添加SQL映射

 在映射文件.xml 文件中添加sql语句映射

<!--  根据用户的真实姓名模糊匹配查询用户信息  -->
    <select id="getUsersByRealName" resultType="SysUser" parameterType="string">

        select * from t_sys_user where realName like CONCAT('%',#{param},'%')

    </select>

<!--  id: 映射规则的唯一标识,可以被select元素的resultMap属性引用   -->
<!--  parameterType: 映射的结果类型 这里指封装成SysUser实例   -->


<!--  resultMap包括以下两个元素   -->

<!--  id :指定和数据表主键字段对应的标识属性,设置此项可以提升MyBatis框架的性能,特别是应用缓存和嵌套结果映射的时候   -->

<!--  result:指定结果集字段和实体类属性的映射关系   -->

④ 测试定义的接口

/**
     *   测试使用SysUser类型提供查询条件
     */
    @Test
    public void getUserListByPojo() throws Exception{

        SysUser user = new SysUser();
        user.setRealName("李");
        List<SysUser> userList = sqlSession.getMapper(SysUserMapper.class).getUserListByPojo(user);

        if (userList !=null && userList.size()>0){
            for (SysUser sysUser: userList){
                logger.debug(" 查询到的用户列表:id="+ sysUser.getId()+",realName="+sysUser.getRealName()+",password="+sysUser.getPassword());
            }
        }
    }

2024-06-21 23:20:43 [DEBUG] PooledDataSource forcefully closed/removed all connections.
2024-06-21 23:20:43 [DEBUG] PooledDataSource forcefully closed/removed all connections.
2024-06-21 23:20:43 [DEBUG] PooledDataSource forcefully closed/removed all connections.
2024-06-21 23:20:43 [DEBUG] PooledDataSource forcefully closed/removed all connections.
2024-06-21 23:20:43 [DEBUG] Opening JDBC Connection
2024-06-21 23:20:44 [DEBUG] Created connection 1148254374.
2024-06-21 23:20:44 [DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4470f8a6]
2024-06-21 23:20:44 [DEBUG] ==>  Preparing: select * from t_sys_user where realName like CONCAT('%',?,'%') 
2024-06-21 23:20:44 [DEBUG] ==> Parameters: 李(String)
2024-06-21 23:20:44 [DEBUG] <==      Total: 2
2024-06-21 23:20:44 [DEBUG]  查询到的用户列表:id=12,realName=李江涛,password=0000000
2024-06-21 23:20:44 [DEBUG]  查询到的用户列表:id=73,realName=李彩云,password=123321
2024-06-21 23:20:44 [DEBUG] Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4470f8a6]
2024-06-21 23:20:44 [DEBUG] Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4470f8a6]
2024-06-21 23:20:44 [DEBUG] Returned connection 1148254374 to pool.

 

这样就可以使用mybatis做一个简单的查询了!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值