首先,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 {@Testpublic 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();}
}

转载于:https://www.cnblogs.com/icerainsoft/p/3152663.html

MyBatis 学习 - 注解相关推荐

  1. Mybatis学习第四天:Mybatis延迟加载懒加载,一级缓存,二级缓存,注解开发

    文章目录 Mybatis中的延迟加载 一对一进行延迟加载 一对多的延迟加载 缓存机制: 一级缓存 二级缓存 注解开发 注解开发--单表的增删改查 注解开发--建立表与实体类的对应关系 注解开发--多表 ...

  2. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  3. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

  4. Spring Boot 实战 —— MyBatis(注解版)使用方法

    原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...

  5. MyBatis学习总结一

    Mybatis学习总结一 1.Mybatis介绍 2.Mybatis架构图 2.1.架构图的意义 2.1.1.JDBC编写 2.1.2.反思问题 2.2.Mybatis架构图 3.入门案例 3.1.下 ...

  6. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  7. MyBatis学习随记

    1       Mybatis入门 1.1     单独使用jdbc编程问题总结 1.1.1  jdbc程序 Public static void main(String[] args) { Conn ...

  8. Mybatis学习笔记(一) —— mybatis介绍

    一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

  9. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五

    在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...

最新文章

  1. 327 - Evaluating Simple C Expressions
  2. 小微贷是美团的上坡之路?
  3. .NETCore 下支持分表分库、读写分离的通用 Repository
  4. java 网络实验_Java实验五网络编程与安全
  5. 为节省内存,Firefox 将用新方式阻止加载没用到的标签页
  6. Java内存模型深度解析:volatile--转
  7. python map(function, iterable, ...) 内置函数的用法 (序列迭代调用并返回)
  8. Uva 442 - Matrix Chain Multiplication(模拟)
  9. .NET Core 2.0迁移技巧之web.config配置文件
  10. php代码实现tp5监听队列,thinkPHP5的队列使用
  11. csv java 科学计数法_javaweb开发页面数字过长显示科学计数法的问题
  12. frame、bounds表示大小和位置的属性以及center、position、anchorPosition
  13. kali linux安装QQ linux版教程
  14. 武汉大学2018计算机考研拟录取名单,【完整版】2018年武汉大学硕士研究生考试拟录取名单...
  15. Win11查看本机WiFi密码
  16. 成为Googler的资源分享!
  17. python怎么退出窗口_关闭pyplot窗口
  18. antd-design-pro实现多页签,切换页签保留缓存,keep-alive
  19. 掌握赚钱最快的方法 其实赚钱很有意思 你可以什么都不会
  20. 微量元素可增加宝宝食欲

热门文章

  1. html之四种方法导入css...
  2. mysql python 3.5_python3.5 与 mysql 交互
  3. linux命令行ps1变量_Ubuntu如何修改命令提示符PS1
  4. 下游传递唯一序列号如何实现幂等性?
  5. 再探ChannelPipeline 的初始化
  6. Redis 到底有多快?
  7. MyBatis常用配置解析-environments标签
  8. SOA的缺陷及其与微服务的关系
  9. Response_案例3_输出字节数据
  10. restTemplate 传递map