게시판을 만들기위한 과정, + 환경설정
MySQL은 구동 작업 필요: c드라이브 -egov\bin\mysql-5.6\startup
cd C:\eGovFrame-3.10.0\bin\mysql-5.6.21\bin
change directory
mysql -u root -p 루트계정 접근
pw 첨엔 그냥 엔터
show databases;
use mysql;
show tables;
테이블 조회 후 user테이블 조회하고 root계정의 비번을 바꿔주자
update user set password = password('12345') where host = 'localhost'
-> and user='root';
내 로컬호스트의 유저컬럼이 root인 컬럼이 패스워드의 비번을 1234로 변경
flush privileges;
quit; 종료
cmd에서 접근하기
mysql -u root -p
이클립스-data source explorer >dbconnection
C:\eGovFrame-3.10.0\maven\repository\mysql\mysql-connector-java\5.1.42
jar추가
vo있는패키지에 new-sql파일 추가
type-MySql_5.1 name-내가설정한 이름 database-mysql
cmd창에서 테이블 생성하면 보기 힘들 수 있어서, 이클립스 파일에서 테이블을 생성해준다!!
임의의 데이터를 넣어줌
My Batis
java - sql 연결시켜줌 DAO가 아닌, sql파일만 (쿼리문만있는)따로 만들어줌
mybatis xml mapper 생성
Mybatis 스키마와 연결됨 "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"
MyBatis 라이브러리 pom.xml에 추가
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 namespace="kr.smhrd.mapper.BoardMapper">
<select id="boardList" resultType="kr.smhrd.mapper.BoardVO">
select * from board;
</select>
</mapper>
생성되므로 추가해줄필요x
sql문 쓰는 boardMapper.xml과 연결해주는
인터페이스 생성
package kr.smhrd.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BoardMapper {
//xml과 연결시켜주는 매퍼-- 이 메소드가 BoardMapper.xml을 실행함!
//xml에서 namespace 에서 이름과 class명이 같아야됨 and id와 메소드명이 같아야됨
// 리턴타입은 실행하는 sql문에 따라 다름 select --> 리스트
public List<BoardVO> boardList();
// {}없는 추상메소드 >>>추상클래스로 만들어야하는데, 추상메소드가 계속 생기기땜에 인터페이스로 만들어주자
//추상클래스는 인스턴스 생성 안됨
}
@Controller
@Autowired 스프링작동될때 모든 객체들이 올라가는데 특정영역의 객체를 불러와 사용하는것 --객체생성안하고도 사용가능하게함 (결합도를 낮추려고--DI의존성주입)
@RequestMapping
키워드 기억
db에서 가져온 데이터는 스프링에서는 모델에 저장하게됨
package kr.smhrd.web;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.smhrd.mapper.BoardMapper;
import kr.smhrd.mapper.BoardVO;
@Controller //컨트롤러라는 어노테이션 명시해줘야됨 디스패처에서 찾아올 수 있게됨
public class BoardController {
//의존성주입 DI를 한다 결합도를 낮추는 방법
@Autowired
private BoardMapper mapper;
//web/boardList.do 라고 요청했을 때 실행되는 메소드 /web까지 컨텍스트패스
@RequestMapping
//db에서 데이터 가져와서, 스프링은 모델에 저장하게됨
public String boardList(Model model) {
System.out.println("게시판전체보기 실행");
List<BoardVO> list = mapper.boardList();
model.addAttribute("list",list);
return "boardList"; //forward방식이동, 뷰이름만 돌려줌-뷰리졸버가이름완성해줌 동적바인딩 동적할당
}
}
db 연결하는 커넥션을 여러개 만들어 사용
hikari cp 사용
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
-->xml db연결
히카리쓰려면 스키마 추가 해줘야됨
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
<?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://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 히카리 CP 빈 등록 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/mysql"></property>
<property name="username" value="root"></property>
<property name="password" value="12345"></property>
</bean>
<!-- 히카리 CP 설정 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<mybatis-spring:scan base-package="kr.smhrd.mapper"/>
</beans>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page import="java.util.ArrayList"%>
<%@page import="kr.smhrd.mapper.BoardVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>게시판</title>
</head>
<body>
<div class="container">
<h2>Spring MVC Board</h2>
<div class="panel panel-default">
<div class="panel-heading">Board List</div>
<div class="panel-body">
<table class="table table-hover table-bordered">
<tr class="active">
<td>번호</td>
<td>제목</td>
<td>조회수</td>
<td>작성자</td>
<td>작성일</td>
</tr>
<c:forEach var="vo" items="${list}" varStatus="i">
<tr>
<td>${i.count}</td>
<td>${vo.title}</td>
<td>${vo.count}</td>
<td>${vo.writer}</td>
<td>${vo.indate}</td>
</tr>
</c:forEach>
</table>
</div>
<div class="panel-body">지능형 IoT ㅇㅇㅇ</div>
</div>
</div>
</body>
</html>
api 추가된 부분
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- My Batis 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- HikariCP 라이브러리 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
<!-- MySQL.jar 파일추가 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- Spring-jdbc, mybatis-spring api 추가 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>