자바 데이터베이스 연결 JDBC 기초 지식 상세 설명(조작 데이터베이스:첨삭 검사)
JDBC 는 자바 애플 리 케 이 션 과 데이터 베 이 스 를 연결 하 는 다리 다.
JDBC 가 뭐 예요?
자바 언어 가 데이터베이스 에 접근 하 는 규범 은 API 입 니 다.
JDBC(Java Database Connectivity)API,즉 자바 데이터베이스 프로 그래 밍 인 터 페 이 스 는 표준 자바 언어 중의 인터페이스 와 클래스 로 이러한 인터페이스 와 클래스 를 사용 하면 자바 클 라 이언 트 프로그램 은 다양한 유형의 데이터 베 이 스 를 방문 할 수 있다.예 를 들 어 데이터베이스 연결 을 구축 하고 SQL 문 구 를 실행 하여 데이터 액세스 작업 을 한다.
JDBC 는 자바 데이터베이스 연결 을 대표 합 니 다.
JDBC 라 이브 러 리 에 포 함 된 API 작업 은 보통 데이터베이스 와 사 용 됩 니 다.
2.JDBC 사용 에 대한 상세 한 설명
1.데이터베이스 연결
먼저 자바 프로젝트 를 새로 만 들 고 jar 패 키 지 를 가 져 옵 니 다:
그리고 해당 데이터베이스 와 표를 새로 만 듭 니 다.
DBUtil.java 작성
package com.study.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBUtil {
private static final String URL="jdbc:mysql://localhost:3306/demo_jdbc";
private static final String NAME="root";
private static final String PASSWORD="root";
public static void main(String[] args) throws Exception{
//1.
Class.forName("com.mysql.jdbc.Driver");
//2.
Connection conn = DriverManager.getConnection(URL, NAME, PASSWORD);
//3. ,
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");// import java.sql.ResultSet;
while(rs.next()){// ,
System.out.println(rs.getString("user_name")+","+rs.getInt("age"));
}
}
}
2.모델 층 구축MVC 3 층 구 조 를 사용 합 니 다.아래 에서 위로 개발 하 는 것 을 권장 합 니 다(DB->view,필요 한 것 을 읽 은 후에 데이터 베 이 스 를 설계 한 다음 에 데이터 베이스 맵 모델 에 따라 제어 층 을 쓰 고 그림 을 쓰 는 것 을 권장 합 니 다).
먼저 대응 하 는 model 층 을 추가 합 니 다:데이터베이스 시트 에 대응 하 는 필드 에 따라 실체 류 를 작성 합 니 다.
package com.study.model;
import java.util.Date;
public class Goddess {
private Integer id;
private String userName;
private Integer sex;
private Integer age;
private Date birthday;
private String email;
private String mobile;
private String createUser;
private Date createDate;
private String updateUser;
private Date updateDate;
private Integer isDel;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getUpdateUser() {
return updateUser;
}
public void setUpdateUser(String updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public Integer getIsDel() {
return isDel;
}
public void setIsDel(Integer isDel) {
this.isDel = isDel;
}
}
그리고 Dao 층 을 새로 추가 하고 DBUtil.java 를 수정 합 니 다.DBUtil.java 코드 는 다음 과 같 습 니 다.
package com.study.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
private static final String URL="jdbc:mysql://localhost:3306/demo_jdbc";
private static final String NAME="root";
private static final String PASSWORD="root";
private static Connection conn=null;
// ( 、 )
static{
try {
//1.
Class.forName("com.mysql.jdbc.Driver");
//2.
conn = DriverManager.getConnection(URL, NAME, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//
public static Connection getConnection(){
return conn;
}
public static void main(String[] args) throws Exception{
//3. ,
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");// import java.sql.ResultSet;
while(rs.next()){// ,
System.out.println(rs.getString("user_name")+","+rs.getInt("age"));
}
}
}
goddessDao.java 코드 는 다음 과 같 습 니 다:
package com.study.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.study.db.DBUtil;
import com.study.model.Goddess;
public class GoddessDao {
public void addGoddess(){
}
public void updateGoddess(){
}
public void delGoddess(){
}
public List<Goddess> query() throws Exception{
Connection con=DBUtil.getConnection();
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select user_name,age from imooc_goddess");
List<Goddess> gs=new ArrayList<Goddess>();
Goddess g=null;
while(rs.next()){// ,
g=new Goddess();
g.setUserName(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
gs.add(g);
}
return gs;
}
//
public Goddess get(){
return null;
}
}
컨트롤 러 층 추가:GoddessAction.java
package com.study.controller;
import java.util.List;
import com.study.dao.GoddessDao;
import com.study.model.Goddess;
public class GoddessAction {
public static void main(String[] args) throws Exception {
GoddessDao gd=new GoddessDao();
List<Goddess> gs=gd.query();
for (Goddess goddess : gs) {
System.out.println(goddess.getUserName()+","+goddess.getAge());
}
}
}
PS:CRUD:추가(Create),읽 기(Retrieve)(데이터 다시 얻 기->고급 응용 프로그램:보고서,페이지),업데이트(Update),삭제(Delete)3.모델 층 구축―CRUD 조작
새로 추 가 된 create 작업:
//
public void addGoddess(Goddess g) throws Exception{
Connection con=DBUtil.getConnection();//
String sql="" +
"insert into imooc_goddess"+
"(user_name,sex,age,birthday,email,mobile,"+
"create_user,create_date,update_user,update_date,isdel) "+
"values("+
"?,?,?,?,?,?,?,current_date(),?,current_date(),?)";// ? , ; mysql current_date()
// sql
PreparedStatement psmt = con.prepareStatement(sql);
// SQL , SQL
psmt.setString(1, g.getUserName());
psmt.setInt(2, g.getSex());
psmt.setInt(3, g.getAge());
// :setDate() java.sql.Date , java.util.Date, ,
psmt.setDate(4, new Date(g.getBirthday().getTime()));
psmt.setString(5, g.getEmail());
psmt.setString(6, g.getMobile());
psmt.setString(7, g.getCreateUser());
psmt.setString(8, g.getUpdateUser());
psmt.setInt(9, g.getIsDel());
// SQL
psmt.execute();
/**
* prepareStatement SQL conn ,
* execute() ;
*
* SQL ? , , 。
* , SQL , SQL 。
*
*/
}
테스트:
package com.study.controller;
import java.util.Date;
import java.util.List;
import com.study.dao.GoddessDao;
import com.study.model.Goddess;
public class GoddessAction {
public static void main(String[] args) throws Exception {
GoddessDao gd=new GoddessDao();
Goddess g1=new Goddess();
g1.setUserName(" ");
g1.setAge(22);
g1.setSex(1);
g1.setBirthday(new Date());
g1.setEmail("[email protected]");
g1.setMobile("123456789");
g1.setCreateUser("admin");
g1.setUpdateUser("admin");
g1.setIsDel(1);
//
gd.addGoddess(g1);
}
}
수정,삭제,조회(id 에 따라)작업:
//
public void updateGoddess(Goddess g) throws SQLException{
Connection con=DBUtil.getConnection();//
String sql="" +
"update imooc_goddess "+
"set user_name=?,sex=?,age=?,birthday=?,email=?,mobile=?,"+
"update_user=?,update_date=current_date(),isdel=?) "+
"where id=?";// ? , ; mysql current_date()
// sql
PreparedStatement psmt = con.prepareStatement(sql);
// SQL , SQL
psmt.setString(1, g.getUserName());
psmt.setInt(2, g.getSex());
psmt.setInt(3, g.getAge());
// :setDate() java.sql.Date , java.util.Date, ,
psmt.setDate(4, new Date(g.getBirthday().getTime()));
psmt.setString(5, g.getEmail());
psmt.setString(6, g.getMobile());
psmt.setString(7, g.getUpdateUser());
psmt.setInt(8, g.getIsDel());
psmt.setInt(9, g.getId());
// SQL
psmt.execute();
}
//
public void delGoddess(Integer id) throws SQLException{
Connection con=DBUtil.getConnection();//
String sql="" +
"delete from imooc_goddess "+
"where id=?";// ? , ; mysql current_date()
// sql
PreparedStatement psmt = con.prepareStatement(sql);
// SQL , SQL
psmt.setInt(1, id);
// SQL
psmt.execute();
}
// ( id )
public Goddess get(Integer id) throws SQLException{
Goddess g=null;
Connection con=DBUtil.getConnection();//
String sql="" +
"select * from imooc_goddess "+
"where id=?";// ? , ; mysql current_date()
// sql
PreparedStatement psmt = con.prepareStatement(sql);
// SQL , SQL
psmt.setInt(1, id);
// SQL
/*psmt.execute();*///execute() ( 、 、 );executeQuery()
ResultSet rs = psmt.executeQuery();//
//
while(rs.next()){
g=new Goddess();
g.setId(rs.getInt("id"));
g.setUserName(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
//rs.getDate("birthday") java.sql.Date 。 :java.sql.Date java.util.Date , 。
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreateUser(rs.getString("create_user"));
g.setCreateDate(rs.getDate("create_date"));
g.setUpdateUser(rs.getString("update_user"));
g.setUpdateDate(rs.getDate("update_date"));
g.setIsDel(rs.getInt("isdel"));
}
return g;
}
검색(name\mobile 등에 따라)동작
// ( )
public List<Goddess> get(String name,String mobile) throws SQLException{
List<Goddess> result=new ArrayList<Goddess>();
Connection con=DBUtil.getConnection();//
StringBuffer sb=new StringBuffer();
sb.append("select * from imooc_goddess ");
sb.append("where user_name like ? and mobile like ?");
// sql
PreparedStatement psmt = con.prepareStatement(sb.toString());
// SQL , SQL
psmt.setString(1, "%"+name+"%");
psmt.setString(2, "%"+mobile+"%");
System.out.println(sb.toString());
// SQL
/*psmt.execute();*///execute() ( 、 、 );executeQuery()
ResultSet rs = psmt.executeQuery();//
Goddess g=null;
//
while(rs.next()){
g=new Goddess();
g.setId(rs.getInt("id"));
g.setUserName(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
//rs.getDate("birthday") java.sql.Date 。 :java.sql.Date java.util.Date , 。
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreateUser(rs.getString("create_user"));
g.setCreateDate(rs.getDate("create_date"));
g.setUpdateUser(rs.getString("update_user"));
g.setUpdateDate(rs.getDate("update_date"));
g.setIsDel(rs.getInt("isdel"));
result.add(g);//
}
return result;
}
테스트:
package com.study.controller;
import java.util.Date;
import java.util.List;
import com.study.dao.GoddessDao;
import com.study.model.Goddess;
public class GoddessAction {
public static void main(String[] args) throws Exception {
GoddessDao gd=new GoddessDao();
/*//
List<Goddess> gs=gd.query();
for (Goddess goddess : gs) {
System.out.println(goddess.getUserName()+","+goddess.getAge());
}*/
Goddess g1=new Goddess();
g1.setUserName(" ");
g1.setAge(22);
g1.setSex(1);
g1.setBirthday(new Date());
g1.setEmail("[email protected]");
g1.setMobile("123456789");
g1.setCreateUser("admin");
g1.setUpdateUser("admin");
g1.setIsDel(1);
//
// gd.addGoddess(g1);
// ( id)
/*Goddess g2 = gd.get(4);
System.out.println(g2.toString());*/
// ( )
List<Goddess> list = gd.get(" ", "139");
//
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).toString());
}
}
}
실행 결과:select * from imooc_goddess where user_name like ? and mobile like ?
Goddess[id=1,userName=개울,섹스=1,age=22,birthday=2000-12-12,[email protected],mobile=13911111111,createUser=ADMIN,createDate=2015-01-08,updateUser=ADMIN,updateDate=2015-01-08,isDel=0
조회 작업 의 진일보 한 보완:
// ( )-----> Map ; where 1=1
public List<Goddess> get(List<Map<String, Object>> params) throws SQLException{
List<Goddess> result=new ArrayList<Goddess>();
Connection con=DBUtil.getConnection();//
StringBuffer sb=new StringBuffer();
sb.append("select * from imooc_goddess where 1=1 ");// where 1=1
if(params !=null && params.size()>0){//
//
for(int i=0;i<params.size();i++){
Map<String, Object> map=params.get(i);
sb.append("and "+map.get("name")+" " +map.get("rela")+" "+map.get("value")+" ");// ? ? , 。
}
}
// sql
PreparedStatement psmt = con.prepareStatement(sb.toString());
System.out.println(sb.toString());
// SQL
/*psmt.execute();*///execute() ( 、 、 );executeQuery()
ResultSet rs = psmt.executeQuery();//
Goddess g=null;
//
while(rs.next()){
g=new Goddess();
g.setId(rs.getInt("id"));
g.setUserName(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setSex(rs.getInt("sex"));
//rs.getDate("birthday") java.sql.Date 。 :java.sql.Date java.util.Date , 。
g.setBirthday(rs.getDate("birthday"));
g.setEmail(rs.getString("email"));
g.setMobile(rs.getString("mobile"));
g.setCreateUser(rs.getString("create_user"));
g.setCreateDate(rs.getDate("create_date"));
g.setUpdateUser(rs.getString("update_user"));
g.setUpdateDate(rs.getDate("update_date"));
g.setIsDel(rs.getInt("isdel"));
result.add(g);//
}
return result;
}
테스트:
// ( )-----> Map
List<Map<String, Object>> params=new ArrayList<Map<String,Object>>();
Map<String, Object> param=new HashMap<String, Object>();
param.put("name", "user_name");
// param.put("rela", "=");
// param.put("value", "' '");// ,
param.put("rela", "like");
param.put("value", "'% %'");// ,
params.add(param);
param=new HashMap<String, Object>();
param.put("name", "mobile");
param.put("rela", "like");
param.put("value", "'%139%'");
params.add(param);
List<Goddess> list1 = gd.get(params);
//
for(int i=0;i<list1.size();i++){
System.out.println(list1.get(i).toString());
}
실행 결과:select * from imooc_goddess where 1=1 and user_name like'%개울%'and mobile like'%139%'
Goddess[id=1,userName=개울,섹스=1,age=22,birthday=2000-12-12,[email protected],mobile=13911111111,createUser=ADMIN,createDate=2015-01-08,updateUser=ADMIN,updateDate=2015-01-08,isDel=0
이 검색 의 하 이 라 이 트 는 get(List
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.