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学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...
- (原创)mybatis学习一,夯实基础
一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【Todo】Mybatis学习-偏理论
之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html <SSM(SpringMVC+Spring+Myba ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...
随机推荐
- 随机用户id号,随机密码用户名
类似新浪微博的用户Id怎么生成呢? 特点:10位随机数,而且是以1开头的 好处:不容易猜出有多少用户 方法一: 目的是生成唯一id.可以用uniqid.uniqid获取一个字符串,循环这个字符串,把每 ...
- Entity Framework底层操作封装V2版本号(2)
这个类是真正的数据库操作类.上面的那个类仅仅是调用了这个封装类的方法进行的操作 using System; using System.Collections.Generic; using System ...
- Atitit. Attilax企业框架 AEF的发展里程总结
Atitit. Attilax企业框架 AEF的发展里程总结 1. Attilax企业框架and框架发展思想 1 2. AEF框架 2 2.1. 多语言支持,涉及的语言 java ,c# php py ...
- atitit.编程语言的未来趋势与进化结果
atitit.编程语言的未来趋势与进化结果 1 语言就像物种一样,会形成进化树,没有前途的分支将枯死脱落. 1 2 机器语言 1 3 汇编语言 2 4 C语言, 硬件抽象层 2 5 高级语言:java ...
- [na]华为acl(traffic-filter)和dhcp管理
这个是财务网络的一个问题, 要求财务的某台机器能访问其他部门区的打印机. 其他部门是不能访问到财务网络的. 华为alc配置实例:-traffic-filter # 在VLAN100上配置基于ACL的报 ...
- spring 发布 Jax-Ws Service (二)
Service import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import ja ...
- 【LeetCode】065-验证数字
写在前面 前面研究OS的经历实在是令人心力憔悴..所以换个新鲜的,把自己的刷题感悟整理一番.刷了有些题了,就先拿最近几天hard题打头阵吧.首先说的是(065)Valid Number这个题,其实一眼 ...
- 0065 MyBatis一级缓存与二级缓存
数据库中数据虽多,但访问频率却不同,有的数据1s内就会有多次访问,而有些数据几天都没人查询,这时候就可以将访问频率高的数据放到缓存中,就不用去数据库里取了,提高了效率还节约了数据库资源 MyBatis ...
- inline函数出现 undefined reference 错误
原因:你把inline函数的implementation放到cpp文件里肯定要报这个错误 正确的做法:把inline函数的声明和实现都放到header里,例如 // declaration: retu ...
- Netty 源码分析之 番外篇 Java NIO 的前生今世
简介 Java NIO 是由 Java 1.4 引进的异步 IO. Java NIO 由以下几个核心部分组成: Channel Buffer Selector NIO 和 IO 的对比 IO 和 NI ...