首先,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学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...
MyBatis 是一款优秀的...通过深入学习 MyBatis,你可以有效地将业务逻辑与数据访问层分离,提高代码的可维护性和可读性。同时,MyBatis 的灵活性和强大的功能使其成为 Java 开发者在处理 SQL 操作时的首选框架之一。
这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的核心概念和主要功能。 1. **MyBatis 概述**: MyBatis 是一个轻量级的 Java ORM(对象关系映射)框架,它的核心是 SQL 映射文件和 SqlSessionFactory。ORM 技术...
在本篇【jee、spring、spring mvc、mybatis 学习(五)】中,我们将深入探讨四个关键的Java企业级开发技术:Java EE(Java Enterprise Edition)、Spring框架、Spring MVC以及MyBatis。这些技术是现代Java Web应用...
Mybatis学习笔记整理,全面详实,通俗易懂.md
本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...
在这些MyBatis学习笔记中,我们可以期待涵盖以下几个关键知识点: 1. **MyBatis简介**:首先会介绍MyBatis的起源、目标和优点,例如简化数据库操作、提高开发效率、易于维护等。 2. **环境搭建**:包括如何下载...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
本资源包含Mybatis的学习视频、教程以及源码,非常适合初学者和进阶者进行深入研究。 首先,Mybatis的学习视频将覆盖从基础到高级的各个主题,如Mybatis的安装配置、XML配置文件的理解、动态SQL的运用、Mapper接口...
在这个"Mybatis学习的demo工程"中,我们主要探讨以下几个关键知识点: 1. **MyBatis核心组件**:MyBatis的核心组件包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper接口。...
### MyBatis学习笔记 #### 一、MyBatis简介及环境搭建 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...
这份“MyBatis学习手册及配置文件”提供了全面的学习资源,帮助用户深入理解并掌握MyBatis的核心概念和实践技巧。 首先,`SqlMapConfig.xml`是MyBatis的全局配置文件,它是MyBatis启动时加载的第一个配置文件,用于...
在"mybatis学习1"中,`com.cpf`包下的源码可能涉及MyBatis的基本使用,包括Mapper接口的实现、动态SQL、结果映射等。Mapper接口允许开发者定义SQL查询,并通过方法签名与SQL结果进行匹配。动态SQL是MyBatis的一大...
在本学习资源中,你将找到一份详尽的Mybatis学习笔记和源码,这将极大地助力你的学习过程,尤其是对自学者而言。这份笔记被认为是非常有价值且深入的,作者在其中倾注了大量的精力,确保了内容的全面性和实用性。 ...
MyBatis是一款流行的Java持久层框架,它的设计理念是让程序员能够通过简单的配置和映射,将对象和数据库中的记录进行关联。MyBatis的主要特点是支持定制化SQL、存储过程以及高级映射,同时它减少了传统JDBC操作中...
本文将基于“Mybatis学习源代码”这一主题,深入探讨Mybatis的基本概念、核心功能以及如何通过狂神说的视频教程进行学习。 Mybatis是一个基于Java的持久层框架,它提供了一个SQL映射框架,可以将SQL语句与Java代码...
MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习代码MyBatis的学习...