-
[Spring]2/3 spring 프로젝트에 +mybatis + mariadb연동WEB/BACK 2021. 10. 3. 19:51반응형
저번 포스팅에 이어서 therapy 프로젝트에 mybatis+ mariadb를 연동하겠습니다.
현재 october 라는 데이터베이스에 user 라는 테이블에 seq, name, phone, id컬럼이 있으며 2개의 데이터가 존재합니다.
여기서 총 데이터의 개수를 불러오는 작업을 하겠습니다.
폴더 구조
1. pom.xml 에 라이브러리 추가 <dependencies></dependencies>사이에 넣어준다.
<!-- DB --> <!-- Maria DB --> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>2.0.3</version> </dependency> <!-- DBCP 데이터베이스 풀 커넥션 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- Spring JDBC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.9.RELEASE</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency>
2. root-context.xml에 bean 설정하기
sqlSessionFactory의 configLocation은 Mybatis의 config파일의 위치를 지정해주는것.
mapperLocation에는 쿼리가 작성될 파일들의 위치를 지정합니다. 아래 설정은 sql폴더 하위의 xml파일을 모두 매핑한다는 의미입니다.
root-context.xml 에 하단 내용 추가 <beans></beans> 사이에 추가
<!-- DB --> <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> <property name="driverClass" value="org.mariadb.jdbc.Driver"></property> <property name="url" value="jdbc:mariadb://localhost:3306/october"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property> <property name="mapperLocations" value="classpath*:/mybatis/sql/*.xml"></property> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> </bean>
3. mybatis관련 config파일,쿼리가 작성될 파일 생성
mybatis-config.xml파일은 설정 파일이고 sql폴더 안의 하위 xml 파일은 쿼리가 작성될 xml파일들이다.
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="UserVO" type="com.world.therapy.UserVO"></typeAlias> </typeAliases> </configuration>
test.xml
<?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="com.world.therapy"> <select id="userCount" resultType="Integer" parameterType="String"> SELECT count(*) FROM user; </select> </mapper>
4. controller, service, dao, vo, jsp를 만들어서 연동되었는지 확인
UserController.java
package com.world.therapy; import javax.servlet.http.HttpServletRequest; 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 org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller public class UserController { @Autowired UserService userService; @RequestMapping(value = "userCount.do", method = RequestMethod.GET) public ModelAndView goTestPage(Model model, HttpServletRequest request, UserVO userVO) { int result = 0; result = userService.getTestValue(); System.out.print(result); ModelAndView mv = new ModelAndView(); mv.setViewName("/user"); mv.addObject("userCount", result); return mv; } }
UserService.java
package com.world.therapy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class UserService { @Autowired UserDAO userDAO; public int getTestValue(){ return userDAO.getTestValue(); } }
UserDAO.java
package com.world.therapy; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class UserDAO { @Autowired private SqlSession SqlSession; public int getTestValue() { return SqlSession.selectOne("com.world.therapy.userCount"); } }
UserVO.java
package com.world.therapy; public class UserVO { private String name; private String phone; private int seq; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public int getSeq() { return seq; } public void setSeq(int seq) { this.seq = seq; } }
db
user.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>사용자 목록</h1> <h2>총 사용자 : ${userCount } 명</h2> </body> </html>
(별첨) jstl setting 하기 참고
2021.10.04 - [WEB/FRONT] - [JSTL] JSTL 셋팅하는법 (pom.xml, spring, eclipse, maven)
5. 브라우저 확인
감사합니다.
반응형'WEB > BACK' 카테고리의 다른 글
[JAVA] list 에서 특정 list에 든 데이타들 삭제하기(arrayList, remove) (0) 2021.11.29 [Spring]3/3 게시판 - 목록 보여주기 (selectList) (2) 2021.10.04 [Spring]1/3 eclipse에서 spring mvc project 생성+tomcat 화면 띄우기 (mac,openJDK11) (0) 2021.10.03 톰캣 버전 정보 확인 cmd (0) 2021.07.05 [JAVA]jsp에서 controller로 값 보내기 (ajax, jquery,serialize(), CRUD) (0) 2021.06.23