`
weitao1026
  • 浏览: 1053301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mybatis的学习

 
阅读更多

首先,POJO

复制代码
/**
 * @Title: Question.java
 * @Package com.test.model
 * @Description: TODO(POJO Question)
 * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
 * Building 24,1387 ZhangDong Road, Shanghai, China.
 * All Rights Reserved. 
 * Company: Insigma HT
 * @author Ares
 * @date 2013-06-24 下午3:48:31
 *
 * Revision History
 *
 * Date            Programmer              Notes
 * ---------    ---------------------  --------------------------------------------
 * 2013-06-24         Ares                    initial
 */
package com.test.model;

import java.util.Date;

/** 
 * 
 * @author Ares
 * @Describe TODO(POJO Question)
 * 
 */
public class Question {

    private String id;
    private int qorder;
    private String qname;
    private String qcontent;
    private Date updateTime;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public int getQorder() {
        return qorder;
    }
    public void setQorder(int qorder) {
        this.qorder = qorder;
    }
    public String getQname() {
        return qname;
    }
    public void setQname(String qname) {
        this.qname = qname;
    }
    public String getQcontent() {
        return qcontent;
    }
    public void setQcontent(String qcontent) {
        this.qcontent = qcontent;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    
}
复制代码

 

继续,Mapper

复制代码
/**
 * @Title: QuestionDAO.java
 * @Package com.test.dao
 * @Description: TODO(Question Mapper)
 * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
 * Building 24,1387 ZhangDong Road, Shanghai, China.
 * All Rights Reserved. 
 * Company: Insigma HT
 * @author Ares
 * @date 2013-06-24 下午3:48:31
 *
 * Revision History
 *
 * Date            Programmer              Notes
 * ---------    ---------------------  --------------------------------------------
 * 2013-06-24         Ares                    initial
 */
package com.test.dao;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.test.model.Question;

/** 
 * 
 * @author Ares
 * @Describe TODO(Question Mapper)
 * 
 */
public interface QuestionDAO {
    
    /**
     * AddBy Ares
     * TODO(find all questions)
     */
    @Select("SELECT * FROM Question")
    public List<Question> findAll();
    
    /**
     * AddBy Ares
     * TODO(find question by ID)
     */
    @Select("SELECT * FROM Question WHERE ID = #{id}")
    public Question findByID(@Param("id")String id);
    
    /**
     * AddBy Ares
     * TODO(just save one question)
     */
    @Insert("INSERT INTO Question VALUES(#{id},#{qorder},#{qname},#{qcontent},#{updateTime})")
    public void save(Question question);
    
    /**
     * AddBy Ares
     * TODO(save all questions in list)
     */
    @InsertProvider(type=SqlProvider.class, method="saveAll")
    public void saveAll(List<Question> list);
    
}
复制代码

上面的Mapper中,saveAll方法使用了SqlProvider,这个是用作批量添加使用的。

复制代码
/**
 * @Title: SqlProvider.java
 * @Package com.test.dao
 * @Description: TODO(SqlProvider)
 * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
 * Building 24,1387 ZhangDong Road, Shanghai, China.
 * All Rights Reserved. 
 * Company: Insigma HT
 * @author Ares
 * @date 2013-6-24 下午3:48:31
 *
 * Revision History
 *
 * Date            Programmer              Notes
 * ---------    ---------------------  --------------------------------------------
 * 2013-6-24       Ares                    initial
 */
package com.test.dao;

import java.text.MessageFormat;
import java.util.List;
import java.util.Map;

import com.test.model.Question;

/**
 * @author Ares
 * TODO(SqlProvider)
 */
public class SqlProvider {
    
    private static final String TABLE = "question";

    public String saveAll(Map<String, List<Question>> params){
        List<Question> list = (List<Question>)params.get("list");
        if(list!=null){
            StringBuffer sb = new StringBuffer("insert into ").append(TABLE).append(" values ");
            MessageFormat mf = new MessageFormat("(#'{'list[{0}].id}, #'{'list[{0}].qorder}, #'{'list[{0}].qname}, #'{'list[{0}].qcontent}, #'{'list[{0}].updateTime})");
            for (int i=0; i<list.size(); i++) {
                sb.append(mf.format(new Object[]{i}));  
                if (i < list.size() - 1) {  
                    sb.append(",");  
                }  
            }
            System.out.println(sb.toString());
            return sb.toString();
        }
        return null;
    }
    
}
复制代码

接下来,把配置文件拿过来,

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "mybatis-3-config.dtd">

<configuration>

    <typeAliases>
        <package name="com.test.model"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="jdbc" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true"/>
                <property name="username" value="root"/>
                <property name="password" value="test"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <package name="com.test.dao"/>
    </mappers>
    <!-- 
    <mappers>
        <mapper resource="com/test/model/Question.xml"/>
    </mappers>
     -->
</configuration>
复制代码

最后,开始测试

复制代码
/**
 * @Title: MyBatisTest.java
 * @Package com.test.test
 * @Description: TODO(MyBatisTest)
 * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
 * Building 24,1387 ZhangDong Road, Shanghai, China.
 * All Rights Reserved. 
 * Company: Insigma HT
 * @author Ares
 * @date 2013-06-24 下午3:48:31
 *
 * Revision History
 *
 * Date            Programmer              Notes
 * ---------    ---------------------  --------------------------------------------
 * 2013-06-24       Ares                    initial
 */
package com.test.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.test.dao.QuestionDAO;
import com.test.model.Question;

/**
 * @author Ares
 * TODO(MyBatisTest)
 */
public class MyBatisTest {

    @Test
    public void testMyBatis(){
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(this.getClass().getResourceAsStream("/com/test/cfg/sqlMapClient.xml"));
        SqlSession sqlSession = sqlSessionFactory.openSession();
        QuestionDAO questionDao = sqlSession.getMapper(QuestionDAO.class);
        
        List<Question> list = new ArrayList<Question>();
        Question q = new Question();
        q.setId(UUID.randomUUID().toString());
        q.setQname("Are you ok?");
        q.setQcontent("I'm ok.");
        q.setQorder(6);
        q.setUpdateTime(new Date());
        list.add(q);
        
        Question q2 = new Question();
        q2.setId(UUID.randomUUID().toString());
        q2.setQname("How are you?");
        q2.setQcontent("I'm ok.");
        q2.setQorder(6);
        q2.setUpdateTime(new Date());
        list.add(q2);
        
        questionDao.saveAll(list);
        sqlSession.commit();
        
        List<Question> questions = questionDao.findAll();
        for (Question question : questions) {
            System.out.println(question.getQname() + " \tReply: "+question.getQcontent());
        }
        
        sqlSession.close();
    }
}
复制代码
分享到:
评论

相关推荐

    MYBATIS学习资料文件

    "MYBATIS学习资料文件"这一标题明确指出,这是一份与MyBatis相关的学习资源集合,可能包含教程、示例代码、笔记等,旨在帮助用户理解和掌握MyBatis这一流行的数据持久层框架。 【描述解读】 描述中提到“mybatis所...

    MyBatis学习笔记1

    【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...

    mybatis学习

    MyBatis 是一款优秀的...通过深入学习 MyBatis,你可以有效地将业务逻辑与数据访问层分离,提高代码的可维护性和可读性。同时,MyBatis 的灵活性和强大的功能使其成为 Java 开发者在处理 SQL 操作时的首选框架之一。

    mybatis学习笔记

    这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的核心概念和主要功能。 1. **MyBatis 概述**: MyBatis 是一个轻量级的 Java ORM(对象关系映射)框架,它的核心是 SQL 映射文件和 SqlSessionFactory。ORM 技术...

    jee、spring、spring mvc、mybatis 学习(五)

    在本篇【jee、spring、spring mvc、mybatis 学习(五)】中,我们将深入探讨四个关键的Java企业级开发技术:Java EE(Java Enterprise Edition)、Spring框架、Spring MVC以及MyBatis。这些技术是现代Java Web应用...

    Mybatis学习笔记整理,全面详实,通俗易懂.md

    Mybatis学习笔记整理,全面详实,通俗易懂.md

    MyBatis学习实例

    本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...

    MyBatis学习笔记.zip

    在这些MyBatis学习笔记中,我们可以期待涵盖以下几个关键知识点: 1. **MyBatis简介**:首先会介绍MyBatis的起源、目标和优点,例如简化数据库操作、提高开发效率、易于维护等。 2. **环境搭建**:包括如何下载...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    Mybatis学习视频+教程+源码

    本资源包含Mybatis的学习视频、教程以及源码,非常适合初学者和进阶者进行深入研究。 首先,Mybatis的学习视频将覆盖从基础到高级的各个主题,如Mybatis的安装配置、XML配置文件的理解、动态SQL的运用、Mapper接口...

    Mybatis学习的demo工程

    在这个"Mybatis学习的demo工程"中,我们主要探讨以下几个关键知识点: 1. **MyBatis核心组件**:MyBatis的核心组件包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper接口。...

    MyBatis学习笔记

    ### MyBatis学习笔记 #### 一、MyBatis简介及环境搭建 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...

    MyBatis学习手册及配置文件

    这份“MyBatis学习手册及配置文件”提供了全面的学习资源,帮助用户深入理解并掌握MyBatis的核心概念和实践技巧。 首先,`SqlMapConfig.xml`是MyBatis的全局配置文件,它是MyBatis启动时加载的第一个配置文件,用于...

    mybatis学习的源码

    在"mybatis学习1"中,`com.cpf`包下的源码可能涉及MyBatis的基本使用,包括Mapper接口的实现、动态SQL、结果映射等。Mapper接口允许开发者定义SQL查询,并通过方法签名与SQL结果进行匹配。动态SQL是MyBatis的一大...

    Mybatis学习笔记+学习源码.zip

    在本学习资源中,你将找到一份详尽的Mybatis学习笔记和源码,这将极大地助力你的学习过程,尤其是对自学者而言。这份笔记被认为是非常有价值且深入的,作者在其中倾注了大量的精力,确保了内容的全面性和实用性。 ...

    MyBatis学习.pdf

    MyBatis是一款流行的Java持久层框架,它的设计理念是让程序员能够通过简单的配置和映射,将对象和数据库中的记录进行关联。MyBatis的主要特点是支持定制化SQL、存储过程以及高级映射,同时它减少了传统JDBC操作中...

    Mybatis学习源代码

    本文将基于“Mybatis学习源代码”这一主题,深入探讨Mybatis的基本概念、核心功能以及如何通过狂神说的视频教程进行学习。 Mybatis是一个基于Java的持久层框架,它提供了一个SQL映射框架,可以将SQL语句与Java代码...

    MyBatis学习课件&代码

    MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习...

Global site tag (gtag.js) - Google Analytics