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 {@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 学习 - 注解相关推荐
- Mybatis学习第四天:Mybatis延迟加载懒加载,一级缓存,二级缓存,注解开发
文章目录 Mybatis中的延迟加载 一对一进行延迟加载 一对多的延迟加载 缓存机制: 一级缓存 二级缓存 注解开发 注解开发--单表的增删改查 注解开发--建立表与实体类的对应关系 注解开发--多表 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
- MyBatis学习总结一
Mybatis学习总结一 1.Mybatis介绍 2.Mybatis架构图 2.1.架构图的意义 2.1.1.JDBC编写 2.1.2.反思问题 2.2.Mybatis架构图 3.入门案例 3.1.下 ...
- MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三
前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...
- MyBatis学习随记
1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 Public static void main(String[] args) { Conn ...
- Mybatis学习笔记(一) —— mybatis介绍
一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- MyBatis多参数传递之混合方式——MyBatis学习笔记之十五
在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...
最新文章
- 327 - Evaluating Simple C Expressions
- 小微贷是美团的上坡之路?
- .NETCore 下支持分表分库、读写分离的通用 Repository
- java 网络实验_Java实验五网络编程与安全
- 为节省内存,Firefox 将用新方式阻止加载没用到的标签页
- Java内存模型深度解析:volatile--转
- python map(function, iterable, ...) 内置函数的用法 (序列迭代调用并返回)
- Uva 442 - Matrix Chain Multiplication(模拟)
- .NET Core 2.0迁移技巧之web.config配置文件
- php代码实现tp5监听队列,thinkPHP5的队列使用
- csv java 科学计数法_javaweb开发页面数字过长显示科学计数法的问题
- frame、bounds表示大小和位置的属性以及center、position、anchorPosition
- kali linux安装QQ linux版教程
- 武汉大学2018计算机考研拟录取名单,【完整版】2018年武汉大学硕士研究生考试拟录取名单...
- Win11查看本机WiFi密码
- 成为Googler的资源分享!
- python怎么退出窗口_关闭pyplot窗口
- antd-design-pro实现多页签,切换页签保留缓存,keep-alive
- 掌握赚钱最快的方法 其实赚钱很有意思 你可以什么都不会
- 微量元素可增加宝宝食欲