ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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. 브라우저 확인

     

    감사합니다.

    반응형

    댓글

Designed by Tistory.