1. 데이터베이스 테이블 생성
1.1. 데이터 테이블 생성과 데이터 삽입을 동시에
/*SQLyog EnterPRise v12.09 (64 bit) )MySQL - 5.6.27 -log : 데이터베이스 - mybatis
************************************** *********** *****************************//*!40101 이름 설정 utf8 */ ;/*!40101 SET SQL_MODE=''* /;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/ *!40101 SET @OLD_SQL_MODE=@@SQL_MO DE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;데이터베이스 생성 /*!32312 존재하지 않는 경우*/` mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */ ;USE `mybatis`;/*`author` 테이블의 테이블 구조 */DROP TABLE IF EXISTS `author`;CREATE TABLE `author` (
`author_id` int (11) unsigned NOT NULL AUTO_INCREMENT COMMENT '저자 ID 기본 키',
`author_username` varchar(30) NOT NULL COMMENT '저자 사용자 이름',
`author_passWord` varchar(32) NOT NULL COMMENT '저자 비밀번호' ,
`author_email` varchar(50) NOT NULL COMMENT '작가의 이메일',
`author_bio` varchar(1000) DEFAULT '이 사람은 정말 나쁜 사람이고 아무것도 남기지 않았습니다.' COMMENT '작가 정보',
`register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '등록 시간' , PRIMARY KEY (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;/*`author` 테이블에 대한 데이터 */
`author`(`author_id`,`author_username`,`author_password`,`author_email`,`author_bio`,`register_time`) 값에 삽입 (1,'Zhang San','123456', '123@QQ.com','장삼은 이제 막 등록을 시작한 초보입니다','2015-10-29 10:23:59'),(2,'lee思','123asf','lisi@ 163.com','hunmiannying','2015-10-29 10 :24:29'),(3,'왕 우','dfsd342','ww@sina.com','강희 왕조','2015 -10-29 10:25:23'),(4,'조류','123098sdfa','zhaoliu@qq.com','화우구','2015-10-29 10:26:09' ),(5,'Qian Qi','zxasqw','qianqi @qq.com','이 사람은 게으르고 아무것도 남기지 않았습니다','2015-10-29 10:27:04'),(6, '장삼펑','123456','zhangsf@qq.com ','이 놈은 쓰레기이고 아무것도 남기지 않은 놈이다','2015-10-29 11:48:00'),(7,'장우지' ,'qwertyuiop','wuji@163.com','이 사람은 정말 나쁜 사람이고 아무것도 남기지 않았습니다','2015-10-29 11:48:24');
/*`blog` 테이블의 테이블 구조 */DROP TABLE IF EXISTS `blog`;CREATE TABLE `blog` (
`blog_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'BlogId 기본 키',
`blog_title` varchar(255) NOT NULL COMMENT '블로그 제목',
`author_id` int(11) unsigned NOT NULL COMMENT '작성자 ID 외래 키', PRIMARY KEY(`blog_id`), KEY `fk_author_id` ( `author_id`), CONSTRAINT `fk_author_id` FOREIGN KEY (`author_id`) REFERENCES `author` (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;/*`blog` 테이블의 데이터 * /`blog`(`blog_id`,`blog_title`,`author_id`) 값에 삽입 (1,'Xiao Zhang의 블로그',1),(2,'Xiao Li',2),(3,'王五 인간이 아님',3),(4,'Zhao Diren',4),(5,'Qian Qian Qian',5);/*테이블 `posts`에 대한 테이블 구조 */DROP TABLE IF EXISTS ` 게시물`; CREATE TABLE `posts` (
`post_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '게시물 기본 키 ID',
`post_subject` varchar(255) NOT NULL COMMENT '게시물 제목, 제목' ,
`post_body` text NOT NULL COMMENT '게시물 내용은 최대 3000자까지 가능합니다.',
`blog_id` int(11) unsigned NOT NULL COMMENT '블로그 기본 키를 외래 키로 사용',
`createtime ` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '기사 생성 시간', PRIMARY KEY (`post_id`), KEY `fk_blog_id` (`blog_id`), CONSTRAINT `fk_blog_id` FOREIGN KEY (`blog_id`) REFERENCES `blog` (`blog_id`)
) ENGINE=InnoDB AUTO_INCREMENT =8 DEFAULT CHARSET=utf8mb4;/*`posts` 테이블의 데이터 */`posts`(`post_id`,`post_subject`,`post_body`,`blog_id`,`createtime`에 삽입 ) 값 (1,'마이바티스 시작하기 1','마이바티스란 무엇인가? rnMyBatis는 맞춤형 SQL, 저장 프로시저 및 고급 매핑을 지원하는 탁월한 지속성 계층 프레임워크입니다. MyBatis는 거의 모든 JDBC 코드와 매개변수의 수동 설정 및 결과 세트 검색을 방지합니다. MyBatis는 인터페이스와 Java POJO(Plain Old Java Objects, 일반 Java 객체)를 데이터베이스의 레코드에 매핑하기 위해 구성 및 기본 맵에 간단한 XML 또는 주석을 사용할 수 있습니다. ',1,'2015-10-29 10:32:21'),(2,'Mybatis 2 시작하기','MyBatis를 사용하려면 mybatis-x.x.x.jar 파일을 클래스 경로에 넣으세요.',1 , '2015-10-29 10:32:52'),(3,'Oracle Learning','Oracle Database, Oracle RDBMS, 줄여서 Oracle이라고도 합니다. 오라클사의 관계형 데이터베이스 관리 시스템입니다.',2 , '2015-10-29 10:33:26'),(4,'JAVA 학습 1','Java는 1995년 5월 Sun Microsystems가 출시한 Java 객체지향 프로그래밍 언어이자 Java 플랫폼의 총칭입니다.', 3,'2015-10-29 10:34:17'),(5,'PL/SQL','PL/SQL은 Procedural Language/SQL이라고 불리는 프로그래밍 언어이기도 합니다. PL/SQL은 Oracle 데이터베이스의 확장입니다. to SQL 문', 4, '2015-10-29 10:37:52'), (6, 'CSS 태그 선택기', '태그 선택기 rnID 선택기 rn 클래스 선택기 rn 특수 선택 ',5,'2015-10- 29 10:39:44'),(7,'javascript','js: 프런트엔드 스크립팅 언어입니다.',2,'2015-10-29 10:40:18') ;/*!40101 SET SQL_MODE =@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
2. 프로젝트 생성
2.1 프로젝트 생성 및 jar 패키지 추가
2.2. 작성자를 예로 들어 엔터티 클래스 생성
package com.pb.mybatis.po;import java.util.Date;/**
*
* @Title: Author.java
* @Package com.pb.mybatis.po
* @ClassName Author
* @Description: TODO (블로그 작성자 클래스)
* @author Liu Nan
* @date 2015-10-29 9:27:53 am
* @version V1 .0*/public class Author { //작자ID
private int 작성자 ID;
//작성자명
private String AuthorUserName;
//작성자密码
private String AuthorPassword;
//작성자
private String 작성자Email;
//작성자
private intauthorBio;
//注册时间
비공개 날짜 등록시간; /**
* @return 작성자 ID */
public int getAuthorId() { returnauthorId;
} /**
* @param AuthorId 설정할 작성자 ID */
public void setAuthorId(intauthorId) { this.authorId =authorId;
}/**
* @return 작성자 사용자 이름 */
public String getAuthorUserName () {return autherUserName; } /**
* @paramauthorUserName 설정할 AuthorUserName */
public String getAuthorPassword() { returnauthorPassword;
} /**
* @return 작성자 비밀번호 */
public void setAuthorPassword(String AuthorPassword) { this .authorPassword =authorPassword;
} /**
* @paramauthorPassword 설정할 작성자 비밀번호입니다. */
public String getAuthorEmail() { returnauthorEmail;
} /**
* @return the 작성자이메일 */
public void setAuthorEmail(String AuthorEmail ) { this.authorEmail =authorEmail;
} /**
* @param 작성자저자에게 이메일 보내기설정할 이메일 */
public int getAuthorBio() { returnauthorBio;
} /**
* @return theauthorBio */
public void setAuthorB 이오 (intauthorBio) { this.authorBio =authorBio;
} /**
* @paramauthorBio 설정할 작성자Bio */
public Date getRegisterTime() { returnregisterTime;
} /**
* @return theregisterTime */
public void setRegisterTime(Date RegisterTime) { this.registerTime =registerTime;
} /**
* @paramregisterTime 설정할 레지스터타임 */
@Override public String toString() { return "Author [authorId=" +authorId + ",authorUserName = " + authorSername +", authorPassword = " + authorPassword +", authorEmail = " + authorEmail +", authorBio = " + authorBio +", registerTime = " + registerTime +"];
}
2.3 创建 创建 创建 创建 配置 配置 文件
br/> PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
< ;transactionManager type="JDBC"/>
3. 추가, 삭제, 수정 및 검색
3.1. 테스트 클래스는 작성자를 예로 들어 설명합니다.
/***/package com.pb.mybatis.mapper;import java.io.InputStream;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 org.junit.Before;import org.junit.Test;import com.pb .mybatis.po.Author;/**
* @Title: AuthorMapperTest.java
* @Package com.pb.mybatis.mapper
* @ClassName AuthorMapperTest
* @Description: TODO (테스트 중)
* @author Liu Nan
* @date 2015-10-29 11:57:21 AM
* @version V1.0
*/public class AuthorMapperTest {
private SqlSessionFactory sqlSessionFactory;
/**
*
* @Title: setUp
* @Description: TODO(각 메소드 이전에 실행되는 메소드)
* @throws 예외 void*/
@Before public void setUp()에서 예외 발생 {
String Resource="configuration.xml";
InputStream in=Resources.getResourceAsStream(resource); //설명 //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
AuthorMapper AuthorMapper=sqlSession.getMapper(AuthorMapper.class); //사용 방법
저자author=authorMapper.findAuthorById(2);
System.out.println(author); //关闭会话 sqlSession.close();
} /**
*
* @Title: testFindAuthorById
* @Description: TODO(사용자 찾기 기준)
void*/
@Test public void testFindAuthorByName() { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
AuthorMapper AuthorMapper=sqlSession.getMapper(AuthorMapper.class); //调사용 방법
목록 저자=authorMapper.findAuthorByName("张");
System.out.println(authors); //关闭会话 sqlSession.close(); for(저자 a:authors){
System.out.println(a.toString());
}
} /**
*
* @Title: testFindAuthorByName
* @Description: TODO(사용자 이름 기반 퍼지 쿼리)
void*/
@Test public void testAddAuthor( ) { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
AuthorMapper AuthorMapper=sqlSession.getMapper(AuthorMapper.class); //调사용 방법
저자author=new Author();
author.setAuthorUserName("不知道");
author.setAuthorPassword("1234567890");
author.setAuthorEmail("12345 6@ qq.com");
author.setAuthorBio("知道是个什么");
author.setRegisterTime(new Date()); int num=authorMapper.addAuthor(author);
System.out.println("num="+num);
System.out.println("authorId="+author.getAuthorId());
sqlSession.commit(); sqlSession.close();
} /**
*
* @Title: testUpdateAuthor
* @Description: TODO(사용자 수정)
void*/
@Test public void testUpdateAuthor() { //세션 가져오기
SqlSession sqlSession=sqlSessionFactory.openSession() ;
author.setAuthorPassword("456789");
author.setAuthorEmail("456789@qq.com" );
author.setAuthor Bio("하하하하하야후");
author.setRegisterTime(new Date()); int num=authorMapper.updateAuthor(author); .getAuthorId()); 🎜> } /**
*
* @Title: testDeleteAuthor
* @Description: TODO(ID 기준 작성자 삭제)
void*/
@Test public void testDeleteAuthor() { //세션 가져오기
sqlSession=sqlSessionFactory.openSession(); ) //호출 방법
> int num=authorMapper.deleteAuthor(10);
System.out.println("num="+num);
sqlSession.commit(); //세션 닫기 sqlSession.close ();
}
}
4.1. .블로그 수업 개설
패키지 com.pb.mybatis.po;/**
* @Title: Blog.java
* @Package com.pb.mybatis.po
* @ClassName 블로그
* @Description: TODO (블로그)
* @author Liu Nan
* @date 2015-10-29 9:32:56 AM
* @version V1.0
*/public class 블로그 { //博客ID
private int blogId;
//标题
private String blogTitle;
//博客작자
개인 저자 저자; /**
* @return the blogId */
public int getBlogId() { return blogId;
} /**
* @param blogId 설정할 blogId */
public void setBlogId(int blogId) { this.blogId = blogId;
}/**
* @blogTitle을 반환하세요. */
public String getBlogtitle () {return blogtitle; } /**
* @param blogTitle 설정할 블로그 제목 */
public Author getAuthor() { returnauthor;
} /**
* @return 작성자 */
public void setAuthor(작성자) { this .author = 작성자;
} /**
* @param 작성자 설정할 작성자 */
@Override public String toString() { return "Blog [blogId=" + blogId + ", blogTitle=" + blogTitle + ", 작성자= " + 작성자 + "]";
}
}
4.2、建立BlogMapper接口
/***/package com.pb.mybatis.mapper;import java.util.List;import com.pb.mybatis.po.Author;import com.pb.mybatis.po.Blog;/** (Javadoc 아님)
*
제목: toString
*
설명: 重写toString방법
* @return
* @see java.lang.Object#toString() */공용 인터페이스 BlogMapper { /**
* @Title: BlogMapper.java br/> PUBLIC "-//mybatis.org//DTD 매퍼 3.0//EN" 4.1, 테스트 클래스 패키지 com.pb.mybatis.mapper;import static org.junit.Assert.*;import java.io.InputStream;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 org.junit.Before;import org.junit.Test;import com.pb.mybatis .po.Author;import com.pb.mybatis.po.Blog;/** 五、一对多 5.1、建立게시물类 package com.pb.mybatis.po;import java.util.Date;/** 제목: toString 설명: 重写toString방법
* @Package com.pb.mybatis.mapper
* @ClassName BlogMapper
* @Description: TODO (이 파일의 기능을 한 문장으로 설명)
* @author Liu Nan
* @date 2015-10-29 11:13:21 AM
* @version V1.0
*/
공용 블로그 findBlogById(int id);
/**
*
* @Title: findBlogById
* @Description: TODO(ID를 기준으로 BLOG 찾기)
* @param id
* @return Blog*/
공개 목록 findBlogByName(String blogTitle);
/**
*
* @Title: findByName
* @Description: TODO(블로그 이름으로 찾기)
* @param name
* @return List
public int addBlog(블로그 블로그);
/**
*
* @Title: addBlog
* @Description: TODO(블로그 추가)
* @param blog
* @return int*/
public int updateBlog(블로그 블로그);
/**
*
* @Title: updateBlog
* @Description: TODO(블로그 수정)
* @param blog
* @return int*/
public int deleteBlog(int id);
}
4.3、建立mapper.xml
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
resultMap
공통 속성은 테이블의 필드에 해당합니다
-->
FROM 블로그,author
WHERE blog.author_id=author.author_id
AND blog.blog_id=#{blogId}
FROM blog,author
WHERE blog.author_id=author.author_id
AND blog_title LIKE "%"#{blogTitle}"%"< ;/select>
VALUES(#{blogTitle} ,#{author.authorId})
SET blog_title=#{blogTitle} ,
author_id=#{author.authorId}
WHERE blog_id=#{blogId}
* @Title: BlogMapperTest.java
* @Package com.pb.mybatis.mapper
* @ClassName BlogMapperTest
* @Description: TODO (이 파일의 기능을 한 문장으로 설명)
* @author Liu Nan
* @date 2015-10-29 3:12:52 PM
* @version V1.0
*/public class BlogMapperTest { private SqlSessionFactory sqlSessionFactory;
@Before public void setUp()에서 예외 발생 {
String Resource="configuration.xml";
InputStream in=Resources.getResourceAsStream(resource); //获取会话工厂
sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
} /**
* {@link com.pb.mybatis.mapper.BlogMapper#findBlogById(int)}에 대한 테스트 방법. */
@Test public void testFindBlogById() { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class); //사용 방법
Blog blog=blogMapper.findBlogById(2);
System.out.println(blog); //关闭会话 sqlSession.close();
} /**
* {@link com.pb.mybatis.mapper.BlogMapper#findBlogByName(java.lang.String)}에 대한 테스트 방법. */
@Test public void testFindBlogByName() { //获取话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class); //调사용 방법
목록
System.out.println(블로그); //关闭会话 sqlSession.close();
} /**
* {@link com.pb.mybatis.mapper.BlogMapper#addBlog(com.pb.mybatis.po.Blog)}에 대한 테스트 방법. */
@Test public void testAddBlog() { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接구
BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class);
Blog blog=new Blog();
blog.setBlogTitle("倚天屠龙记");
AuthorMapper AuthorMapper=sqlSession .getMapper(AuthorMapper.class); //사용 방법
저자author=authorMapper.findAuthorById(2);
blog.setAuthor(저자); int num=blogMapper.addBlog(blog);
System.out.println("num="+num);
System.out.println(blog.getBlogId());
sqlSession.commit( );
sqlSession.close();
} /**
* {@link com.pb.mybatis.mapper.BlogMapper#updateBlog(com.pb.mybatis.po.Blog)}에 대한 테스트 방법. */
@Test public void testUpdateBlog() { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class); //사용 방법
Blog blog=blogMapper.findBlogById(8);
blog.setBlogTitle("笑傲江湖");
저자author=blog.getAuthor();
author.setAuthorUser 이름( "金庸");
AuthorMapper AuthorMapper=sqlSession.getMapper(AuthorMapper.class); intauthorNum=authorMapper.updateAuthor(저자); int num=blogMapper.updateBlog(blog);
System.out.println("authorNum="+authorNum);
System.out.println("num="+num);
sqlSession.commit (); //关闭会话 sqlSession.close();
} /**
* {@link com.pb.mybatis.mapper.BlogMapper#deleteBlog(int)}에 대한 테스트 방법. */
@Test public void testDeleteBlog() { //获取会话
SqlSession sqlSession=sqlSessionFactory.openSession(); //Mapper接口
BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class); int num=blogMapper.deleteBlog(11);
System.out.println("num="+num);
sqlSession.commit();
sqlSession.close();
}
}
* @Title: Posts.java
* @Package com.pb.mybatis.po
* @ClassName Posts
* @Description: TODO (블로그 글)
* @author Liu Nan
* @date 2015-10-29 9:31:22 AM
* @version V1.0
*/public class Posts { //文章ID
private int postId;
//文件主题
private String postSubject;
//主体内容
private String postBody; //文章建立时间
private Date createTime;
/**
* @return the postId */
public int getPostId() { return postId;
} /**
* @param postId 설정할 게시물 ID */
public void setPostId(int postId) { this .postId = postId;
} /**
* @return the postSubject */
public String getPostSubject() { return postSubject;
} /**
* @param postSubject 게시물 제목 설정 */
public void setPostSubject(String postSubject ) { this.postSubject = postSubject;
} /**
* @postBody 반환 */
public String getPostBody() { return postBody;
} /**
* @param postBody 설정할 postBody */
public void setPostBody (String postBody) { this.postBody = postBody;
} /**
* @return createTime */
public Date getCreateTime() { return createTime;
} /**
* @param createTime 설정할 createTime */
public void setCreateTime(Date createTime) { this.createTime = createTime;
} /**(Javadoc 아님)
*
*
* @return
* @see java.lang.Object#toString() */
@Override public String toString() { return "게시물 [postId=" + postId + ", postSubject =" + postSubject + ", postBody=" + postBody +", createTime="
+ createTime + "]";
}
}
5.2、지금 블로그类中添加List
package com.pb.mybatis.po;import java.util.List;/** br/> PUBLIC "-//mybatis.org//DTD 매퍼 3.0//EN" 5.4, Test 테스트 클래스는 그대로 유지됩니다 위는 MyBatis(2)에 대한 소개입니다.---일대일, 일대다 콘텐츠에 대한 자세한 내용은 PHP 중국어를 참고하세요. 홈페이지(www.php.cn)!
* @Title: Blog.java
* @Package com.pb.mybatis.po
* @ClassName 블로그
* @Description: TODO (블로그)
* @author Liu Nan
* @date 2015-10-29 9:32:56 AM
* @version V1.0
*/public class Blog { //博客ID
private int blogId;
//标题
private String blogTitle;
//博客작자
개인 저자 저자;
//文章List
비공개 목록 게시물; /**
* @return the blogId */
public int getBlogId() { return blogId;
} /**
* @param blogId 설정할 blogId */
public void setBlogId(int blogId) { this.blogId = blogId;
}/**
* @blogTitle을 반환하세요. */
public String getBlogtitle () {return blogtitle; } /**
* @param blogTitle 설정할 블로그 제목 */
public Author getAuthor() { returnauthor;
} /**
* @return 작성자 */
public void setAuthor(작성자) { this .author = 작성자;
} /**
* @param 작성자 설정할 작성자 */
공개 목록 getPosts() { return post;
} /**
* @return 게시물 */
public void setPosts(List
} /**
* @param은 설정할 게시물을 게시합니다. * /
@Override public String toString() { return "Blog [blogId=" + blogId + ", blogTitle=" + blogTitle + ", 작성자=" + 작성자 + ", post=" + 게시물 + "]";
}
}
5.3、修改blogMapper.xml
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
author.author_id,author.author_username,author.author_password,author.author_email,author.author_bio,author.register_time ,
posts.post_id,posts .post_subject,posts.post_body,posts.createtime,posts.blog_id
FROM blog,author,posts
WHERE blog.author_id=author.author_id
AND blog.blog_id =posts.blog_id
AND 블로그 .blog_id=#{blogId}
FROM blog,author
WHERE blog.author_id =author.author_id
AND blog_title LIKE "%"#{blogTitle}"%"