资讯专栏INFORMATION COLUMN

MyBatis 映射器

cpupro / 3431人阅读

摘要:一个用于生成配置文件的插件使用方法呢是加入插件中然后执行相关命令可以实现自动生成配置文件自动映射首先编写无参的然后创建数据库这次使用的是开发环境创建的数据库数据库类型如下编写映射文件此时结果会自动映射到对象中根据对象自动调用方法然后进行赋

ps 一个用于生成MyBatis配置文件的插件 mybatis-generator
使用方法呢, 是加入maven插件中 然后执行相关命令可以实现自动生成MyBatis配置文件
自动映射

首先编写无参的javabean

package com.ming.MyBatis.POJO;

/**
 * @author ming
 */
public class Role {
    private int id;
    private String roleName;
    private String note;
    
    public Role(){

    }

    /**
     * @param id 
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @param roleName 
     */
    public void setRole_name(String roleName) {
        this.roleName = roleName;
    }

    /**
     * @param note 
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return 
     */
    public int getId() {
        return id;
    }

    /**
     * @return 
     */
    public String getRoleName() {
        return roleName;
    }

    /**
     * @return 
     */
    public String getNote() {
        return note;
    }
}
然后创建数据库

这次使用的是开发环境创建的数据库
数据库类型如下

编写映射文件

    
    

此时结果会自动映射到VO对象中,根据VO对象自动调用set方法,然后进行赋值操作

此时DAO层接口

    /**
     * @param id
     * @return
     */
    public Role getRole(int id);
传递多个参数

如果需要传递多个参数,使用MyBatis提供的Map接口

首先新增加DAO层接口

    /**
     * 查询Map
     * @param params
     * @return
     */
    public List findRoleByteMap(Map params);

接着,书写映射文件,传递参数

    

这里呢,定义了一个结果集
对于返回的数据,使用typehand进行拦截,将会调用自定义别名的role类

    
        
        
        
        
        
        
    

现在的完整文件





    
        
        
        
        
        
        
    
    
    
    
    



    
    
    
    
        
    
    
    
    
        
    
    
    
        
            
            
            
            
                
                
                
                
            
        
    
    
    
        
    

书写结果展示

<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.ming.Util.SqlSessionFactoryUtil" %>
<%@ page import="com.ming.MyBatis.POJO.RoleMapper" %>
<%@ page import="com.ming.MyBatis.POJO.Role" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.swing.text.html.HTMLDocument" %>
<%@ page import="java.util.Iterator" %>


Hello World!

<% long startTime = System.currentTimeMillis(); //获取开始时间 SqlSession sqlSession = null; List role = null; for(int i = 0; i < 10; i++) { try { sqlSession = SqlSessionFactoryUtil.openSqlSesion(); RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); Map paramsMap = new HashMap(); paramsMap.put("roleName", "name"); paramsMap.put("note", "note"); role = roleMapper.findRoleByteMap(paramsMap); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } finally { if (sqlSession != null) { sqlSession.close(); } } } long endTime = System.currentTimeMillis(); //获取结束时间 %> <% Iterator iterator = role.iterator(); while(iterator.hasNext()){ %> <%=((Role)iterator.next()).getNote()%> <% } %>

数据库中大概有一万多条记录,时间较长

ps 一万多条list担心内存

此时可以在此处输出查询日志,用于进行分析

注解传递参数

使用param注解传递参数

新建一个DAO接口

    /**
     * @param roleName 
     * @param note
     * @return
     */
    public List findRoleByteMap1(@Param("roleName") String roleName, @Param("note") String note);

再次编写映射文件,对DAO层和SQL语句进行映射配置

    
    

再次编写展示层

<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.ming.Util.SqlSessionFactoryUtil" %>
<%@ page import="com.ming.MyBatis.POJO.RoleMapper" %>
<%@ page import="com.ming.MyBatis.POJO.Role" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.swing.text.html.HTMLDocument" %>
<%@ page import="java.util.Iterator" %>


Hello World!

<% long startTime = System.currentTimeMillis(); //获取开始时间 SqlSession sqlSession = null; List role = null; for(int i = 0; i < 10; i++) { try { sqlSession = SqlSessionFactoryUtil.openSqlSesion(); RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); Map paramsMap = new HashMap(); paramsMap.put("roleName", "name"); paramsMap.put("note", "note"); role = roleMapper.findRoleByteMap1("name", "note"); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } finally { if (sqlSession != null) { sqlSession.close(); } } } long endTime = System.currentTimeMillis(); //获取结束时间 %> <% Iterator iterator = role.iterator(); while(iterator.hasNext()){ %> <%=((Role)iterator.next()).getNote()%> <% } %>

运行结果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74132.html

相关文章

  • spring和mybatis的整合

    摘要:第一是手动在的配置文件中使用部分来指定类路径。第二是使用工厂的属性。注解和样式的配置都是支持的。在事务处理期间一个单独的对象将会被创建和使用。创建的代理控制开放和关闭翻译任意的异常到的异常中。每个映射器将会在指定的包路径中递归地被搜索到。 mybatis-spring 若要整合spring和mybatis就需要一个插件即mybatis-spring-x.x.x.jar。具体的安装如下所...

    vspiders 评论0 收藏0
  • mybatis 入门搭建

    摘要:首先导包依赖如下构建应用是以为中心的实例可以通过获得其中是工厂接口任务用于创建配置文件将会解析配置文件在类对象中配置获取数据源事务管理器映射器在文件下新建文件配置文件内容如下定义别名定义数据库信息事物管理 首先导包 依赖如下 mysql mysql-connector-java 8.0.15 org.m...

    enali 评论0 收藏0
  • Mybatis射器配置文件疑点

    摘要:所有的语句都需要配置一个,并且要和中的方法名相同。若有参数,则需要设置参数类型,如下一般来说会在中设置类型,即其实不设置一般情况下也不会出错,但是一般情况下设置类型,因为当参数值为空时,能够确保找到正确的类型处理器。 mapper statement: insert update select delete。所有的mapper statement 语句都需要配置一个id,并且id...

    CNZPH 评论0 收藏0
  • 【深入浅出MyBatis笔记】MyBatis的解析和运行原理

    摘要:的解析和运行原理构建过程提供创建的核心接口。在构造器初始化时会根据和的方法解析为命令。数据库会话器定义了一个对象的适配器,它是一个接口对象,构造器根据配置来适配对应的对象。它的作用是给实现类对象的使用提供一个统一简易的使用适配器。 MyBatis的解析和运行原理 构建SqlSessionFactory过程 SqlSessionFactory提供创建MyBatis的核心接口SqlSess...

    bitkylin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<