몽고 DB 기초
1. 몽고 디비 서버 가동
mongodb 폴더 내의 bin 폴더 내에 들어가서 mongod –dbpath c:\mongodb\data 라고 쓰면 됨
2. 몽고 디비 접근(1/2)
몽고 디비 서버를 가동한 상태에서 새로운 cmd 창을 열어서 접근해야 함.
mongodb 폴더 내의 bin 폴더에 들어가서 mongo 라고 쓰면 됨.
3. 몽고 DB 접근(2/2)
“show dbs” 를 통해 소유한 db목록을 보고, “use db명” 을 통해서 원하는 db에 접근한 후, insert, update, delete 등을 실행할 수 있음.
■ 가지고 있는 db목록을 출력
show dbs
■ db명을 사용
use db명
ex) use test
use mydb
■ 데이터를 인서트
db.member.insert({no:1,name:”hong”,tel:”1111-1111″,addr:”seoul”})
※ 중괄호 안쪽이 1개의 row임
■ 모든 데이터를 읽어옴(SELECT * FROM member)
db.member.find()
■ 조건에 맞는 데이터를 읽어옴 (SELECT * FROM member WHERE ~)
db.member.find({no:1})
4. 자바에서 몽고 DB 접근하기
4-0. app.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=”http://www.springframework.org/schema/beans“
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“
xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd“>
<bean id=”dao” class=”com.dao.MemberDAO”/>
</beans>
4-1. 커넥션 (생성자에서 처리)
public class MemberDAO {
private MongoClient mc;//Connection
private DB db;//ORCL (mydb)
private DBCollection dbc;//table
//db.member.find()
public MemberDAO(){
try{
mc=new MongoClient(“localhost”);//연결
db=mc.getDB(“test”);
dbc=db.getCollection(“member”);
//dbc.find()
}catch(Exception ex){System.out.println(ex.getMessage());}
}
}
4-2. 셀렉트 (리스트로 받아오기)
public List<MemberVO> memberAllData(){
List<MemberVO> list=new ArrayList<MemberVO>();
try{
// dbc.find()
//DBCursor cursor=dbc.find();
DBCursor cursor=dbc.find().sort(new BasicDBObject(“no”,-1));
//ORDER BY no
// -1(DESC) 1(ASC)
while(cursor.hasNext()){
BasicDBObject obj=(BasicDBObject)cursor.next();//rs.next()와 동일. 중괄호{} 단위로 가져옴
//{no,name,tel,addr}
MemberVO vo=new MemberVO();
vo.setNo(obj.getInt(“no”));
vo.setName(obj.getString(“name”));
vo.setTel(obj.getString(“tel”));
vo.setAddr(obj.getString(“addr”));
//인트와 스트링, 두 가지 뿐이다(날짜형은 없다)
list.add(vo);
}
}catch(Exception ex){System.out.println(ex.getMessage());}
return list;
}
——————————
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
MemberDAO dao=(MemberDAO)app.getBean(“dao”);
//그냥 출력
List<MemberVO> list=dao.memberAllData();
for(MemberVO vo:list){
System.out.println(vo.getNo()+” “+vo.getName()+” “+vo.getTel()+” “+vo.getAddr());
}
}
4-3. 인서트
public void insert(MemberVO vo){
try{
DBCursor cursor=dbc.find();
int max=1;
while(cursor.hasNext()){
BasicDBObject obj=(BasicDBObject)cursor.next();
int no=obj.getInt(“no”);
if(max<no){
max=no;
}
}
cursor.close();
BasicDBObject obj=new BasicDBObject();//DB Object 1개가 블록 1개임
obj.put(“no”, max+1);
obj.put(“name”, vo.getName());
obj.put(“tel”, vo.getTel());
//{}
obj.put(“addr”, vo.getAddr());
dbc.insert(obj);
}catch(Exception ex){System.out.println(ex.getMessage());}
}
—————————
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
MemberDAO dao=(MemberDAO)app.getBean(“dao”);
//인서트
MemberVO vo=new MemberVO();
vo.setName(“박문수”);
vo.setTel(“3333-3333”);
vo.setAddr(“강원”);
dao.insert(vo);
System.out.println(“데이터 추가 완료”);
}
4-4. 검색
public List<MemberVO> memberFindData(String str){
List<MemberVO> list=new ArrayList<MemberVO>();
try{
BasicDBObject obj1=new BasicDBObject();
obj1.put(“name”, new BasicDBObject(“$regex”,str+”.*”));
// LIKE ‘%str%’
// $lt(<) $gt(>) $le(<=) $ge(>=) $eq(==)
DBCursor cursor=dbc.find(obj1);
while(cursor.hasNext()){
BasicDBObject obj=(BasicDBObject)cursor.next();//rs.next()와 동일. 중괄호{} 단위로 가져옴
//{no,name,tel,addr}
MemberVO vo=new MemberVO();
vo.setNo(obj.getInt(“no”));
vo.setName(obj.getString(“name”));
vo.setTel(obj.getString(“tel”));
vo.setAddr(obj.getString(“addr”));
//인트와 스트링, 두 가지 뿐이다(날짜형은 없다)
list.add(vo);
}
}catch(Exception ex){System.out.println(ex.getMessage());}
return list;
}
———————————————————-
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
MemberDAO dao=(MemberDAO)app.getBean(“dao”);
//검색
Scanner scan=new Scanner(System.in);
System.out.println(“검색어:”);
String name=scan.next();
List<MemberVO> list=dao.memberFindData(name);
for(MemberVO vo:list){
System.out.println(vo.getNo()+” “+vo.getName()+” “+vo.getTel()+” “+vo.getAddr());
}
}
4-5. 딜리트
public void delete(int no){
try{
BasicDBObject obj=new BasicDBObject();
//db.member.remove({no:1})
//다시 말하지만 블록(중괄호)은 베이직디비오브젝트임.
obj.put(“no”, no);
dbc.remove(obj);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
——————————————–
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
MemberDAO dao=(MemberDAO)app.getBean(“dao”);
//삭제
Scanner scan=new Scanner(System.in);
System.out.println(“번호:”);
int no=scan.nextInt();
dao.delete(no);
System.out.println(“삭제 완료”);
}
4-6. 카운트
//카운트
dbc.count()
dbc.count({no:1}) 로도 쓸 수 있다.
4-7. 업데이트
public void update(MemberVO vo){
try{
BasicDBObject where=new BasicDBObject();
where.put(“no”, vo.getNo());
//WHERE no=1
BasicDBObject updateObj=new BasicDBObject();
updateObj.put(“name”, vo.getName());
updateObj.put(“tel”, vo.getTel());
updateObj.put(“addr”, vo.getAddr());
BasicDBObject obj=new BasicDBObject();
obj.put(“$set”, updateObj);//수정
dbc.update(where, obj);
}catch(Exception ex){System.out.println(ex.getMessage());}
}
———————————————-
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext(“app.xml”);
MemberDAO dao=(MemberDAO)app.getBean(“dao”);
//수정
MemberVO vo=new MemberVO();
vo.setNo(2);
vo.setName(“박문식”);
vo.setTel(“3333-3333”);
vo.setAddr(“강원”);
dao.update(vo);
System.out.println(“데이터 수정 완료”);
}