设为首页 收藏本站
查看: 757|回复: 0

[经验分享] Mybatis基础入门一

[复制链接]

尚未签到

发表于 2016-11-25 09:09:14 | 显示全部楼层 |阅读模式
数据准备:

CREATE TABLE MEMBER (
MEMBER_ID NUMBER(10, 0),
FIRST_NAME VARCHAR2(400) NOT NULL,
LAST_NAME VARCHAR2(400) NOT NULL,
ADDRESS VARCHAR2(1000),
PHONE VARCHAR2(400),
PRIMARY KEY (MEMBER_ID));
CREATE TABLE TASK (
TASK_ID NUMBER(10, 0),
MEMBER_ID NUMBER(10, 0),
CONTENT VARCHAR2(1000),
DUE_DATE DATE,
PRIMARY KEY (TASK_ID),
FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER (MEMBER_ID));
INSERT INTO MEMBER (MEMBER_ID, FIRST_NAME, LAST_NAME,PHONE) VALUES(1,'Alex', 'Brown', '635874');
INSERT INTO MEMBER (MEMBER_ID, FIRST_NAME, LAST_NAME,PHONE) VALUES(2,'Ada', 'Lee', '536952');
INSERT INTO MEMBER (MEMBER_ID, FIRST_NAME, LAST_NAME,PHONE) VALUES(3,'Candy', 'Law', '362548');
INSERT INTO MEMBER (MEMBER_ID, FIRST_NAME, LAST_NAME,PHONE) VALUES(4,'Vincent', 'Xu', '123698');
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (1, 1 ,'Kill Bill Gates.', TO_DATE('2012-12-31', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (2, 1 ,'Earn USD 1 billion.', TO_DATE('2033-01-01', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (3, 1 ,'Worldwide trip.', TO_DATE('2020-03-03', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (4, 2 ,'Learn Java.', TO_DATE('2012-09-08', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (5, 2 ,'Learn Ruby.', TO_DATE('2012-11-12', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (6, 3 ,'Finish job 1.', TO_DATE('2013-04-01', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (7, 3 ,'Finish job 2.', TO_DATE('2013-06-06', 'YYYY-MM-DD'));
INSERT INTO TASK (TASK_ID,MEMBER_ID, CONTENT, DUE_DATE) VALUES (8, 3 ,'Finish job 3.', TO_DATE('2014-02-28', 'YYYY-MM-DD'));
COMMIT;



目录结构:

[img]
DSC0000.jpg
 [/img]

 

mybatis-config.xml(mybatis的配置文件)

 


<!-- db setting -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.2.136:1521:dev" />
<property name="username" value="cnt5_training" />
<property name="password" value="p" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 关联mapper文件 -->
<mapper resource="com/core/traininig/mybatisquiz/MemberMapper.xml" />
</mappers>

 
 
MemberMapper.xml(POJO 与 sql 的映射文件)

 


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置哪个Mapper会调用该映射文件来进行CRUD -->
<mapper namespace="com.core.traininig.mybatisquiz.MemberMapper">
<resultMap id="memberWithTask" type="com.core.traininig.entity.Member">
<result property="memberId" column="MEMBER_ID" />
<result property="firstName" column="FIRST_NAME" />
<result property="lastName" column="LAST_NAME" />
<result property="address" column="ADDRESS" />
<result property="phone" column="PNONE" />
<collection property="tasks"
ofType="com.core.traininig.entity.Task" column="MEMBER_ID" javaType="ArrayList">
<result property="taskId" column="TASK_ID" />
<result property="memberId" column="MEMBER_ID" />
<result property="content" column="CONTENT" />
<result property="dueDate" column="DUE_DATE" />
</collection>
</resultMap>
<!-- id要与XXXMapper.java 的方法名一致-->
<select id="getAllMembers" parameterType="map"
resultMap="memberWithTask">
SELECT m.MEMBER_ID AS ID, m.FIRST_NAME, m.LAST_NAME, m.ADDRESS, m.PHONE,t.TASK_ID,
t.MEMBER_ID, t.CONTENT, t.DUE_DATE
FROM MEMBER m LEFT JOIN TASK t ON m.MEMBER_ID = t.MEMBER_ID
ORDER BY m.FIRST_NAME, t.DUE_DATE DESC
</select>
</mapper>

 
MemberMapper.java

import java.util.List;
import com.core.traininig.entity.Member;
/**
* @author aron.tang
*
*/
public interface MemberMapper {
List<Member> getAllMembers();
}

Member.java

 


import java.util.List;
/**
* @author aron.tang
*
*/
public class Member {
private int memberId;
private String firstName;
private String lastName;
private String address;
private String phone;
private List<Task> tasks;
/**
* @return the memberId
*/
public int getMemberId() {
return memberId;
}
/**
* @param memberId the memberId to set
*/
public void setMemberId(final int memberId) {
this.memberId = memberId;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(final String firstName) {
this.firstName = firstName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(final String lastName) {
this.lastName = lastName;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress(final String address) {
this.address = address;
}
/**
* @return the phone
*/
public String getPhone() {
return phone;
}
/**
* @param phone the phone to set
*/
public void setPhone(final String phone) {
this.phone = phone;
}
/**
* @return the tasks
*/
public List<Task> getTasks() {
return tasks;
}
/**
* @param tasks the tasks to set
*/
public void setTasks(final List<Task> tasks) {
this.tasks = tasks;
}

}

 
 
Task.java


import java.util.Date;
/**
* @author aron.tang
*
*/
public class Task {
private int taskId;
private int memberId;
private String content;
private Date dueDate;
/**
* @return the taskId
*/
public int getTaskId() {
return taskId;
}
/**
* @param taskId the taskId to set
*/
public void setTaskId(final int taskId) {
this.taskId = taskId;
}
/**
* @return the memberId
*/
public int getMemberId() {
return memberId;
}
/**
* @param memberId the memberId to set
*/
public void setMemberId(final int memberId) {
this.memberId = memberId;
}
/**
* @return the content
*/
public String getContent() {
return content;
}
/**
* @param content the content to set
*/
public void setContent(final String content) {
this.content = content;
}
/**
* @return the dueDate
*/
public Date getDueDate() {
return dueDate;
}
/**
* @param dueDate the dueDate to set
*/
public void setDueDate(final Date dueDate) {
this.dueDate = dueDate;
}
}

 
 
测试类MemberManager.java

 


import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.core.traininig.entity.Member;
import com.core.traininig.entity.Task;
/**
* @author aron.tang
*/
public class MemberManager {
private static SqlSessionFactory sqlSessionFactory;
public static void main(final String[] args) throws IOException {
// load the setting file of mybatis.
final String resource = "com/core/traininig/mybatisquiz/mybatis-config.xml";
final InputStream inputStream = Resources.getResourceAsStream(resource);
// build the SqlSessionFactory instance which manage the session when access DB.
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
printMembers();
}
public static List<Member> getAllMembers() {
// open the session then can access the assigned DB
final SqlSession session = sqlSessionFactory.openSession();
// get the mapper which map the sql to POJO.
final MemberMapper mapper = session.getMapper(MemberMapper.class);
return mapper.getAllMembers();
}
public static void printMembers() {
final MemberMapper mapper = getMapper();
final List<Member> members = mapper.getAllMembers();
System.out.println("There are total " + members.size() + " members");
System.out.println("================================================");
for (final Member m : members) {
System.out.println(m.getFirstName() + " " + m.getLastName() + " has " + m.getTasks().size() + " tasks. ");
for (final Task t : m.getTasks()) {
System.out.println("{" + t.getContent() + "} to be done before " + parseDate(t.getDueDate()));
}
System.out.println();
}
closeSession();
}
public static String parseDate(final Date date) {
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
final String result = df.format(date);
return result;
}
private static MemberMapper getMapper() {
final SqlSession session = sqlSessionFactory.openSession();
final MemberMapper mapper = session.getMapper(MemberMapper.class);
return mapper;
}
private static void closeSession() {
final SqlSession session = sqlSessionFactory.openSession();
if (session != null) {
session.close();
}
}
}

 
 
测试结果:


DSC0001.jpg
 主要用到的jar包: 
mybatis-3.0.5.jar

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305275-1-1.html 上篇帖子: mybatis sql in 查询 下篇帖子: Mybatis 打印SQL(sql)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表