전체 네트워크에서 가장 상세한 제로 기반 동적 웹 프로젝트는 mybatis 프레임워크를 통합하여 추가, 삭제, 수정 및 쿼리 시스템(케이스 + 소스 코드)을 구현합니다.

환경 준비

이 시스템이 사용하는 환경은

  1. jdk1.8
  2. .mysql 데이터베이스
  3. 바람둥이 8.5
  4. 데이터베이스 도구: navicat

환경이 구성되지 않을 경우 제 다른 글로 이동해주세요.
Eclipse는 maven 프로젝트를 오프라인에서 빌드하고, 로컬 웨어하우스를 구성하고, mybatis 프로젝트를 생성합니다.

문제 분석

이 경우 제품 시스템의 db_goods 데이터베이스에 tb_goods 제품 테이블을 자세히 표시합니다 . 테이블 디자인은 다음과 같습니다.

필드 유형 길이 비어 있지 않음 설명하다
ID 정수 11 기본 키, 자동 증분
이름 varchar 32 상품명
가격 소수 (6,2) 상품 가격
store_number 정수 5 상품주
상품_종류 varchar 6 상품 유형(물리적 객체, 가상 거래 항목)
제 시간에 날짜 시간 제품 보관 시간

이 경우 데이터 테이블에 대한 추가, 삭제, 수정 및 쿼리가 구현됩니다.

성취하다

데이터베이스, 데이터 테이블 생성, 테스트 데이터 추가

오픈 mysql 서비스

방법 1. 명령을 사용하여 mysql 서비스 열기

net start mysql

방법 2. 작업 관리자(Xiaobai에 적합)에서 열어
작업 관리를 열고, 서비스 옵션을 찾고, 아래로 스와이프하여 mysql 서비스를 찾습니다. 상태가 중지됨으로 표시되면 서비스를 마우스 오른쪽 버튼으로 클릭하고 실행을 선택합니다. .
여기에 이미지 설명 삽입

mysql에 연결하고 데이터베이스 생성

서비스가 열리면 navicat 소프트웨어를 사용하여 연결하십시오.
여기에 이미지 설명 삽입

문제 분석 결과 데이터베이스 이름이 db_goods이고 테이블 이름이 tb_goods인 것으로 분석되었습니다.
navicat 소프트웨어를 사용하여 데이터베이스 생성
여기에 이미지 설명 삽입
데이터베이스 이름을 입력하고 인코딩 및 데이터 정렬을 선택합니다.

여기에 이미지 설명 삽입
생성이 완료되면 데이터베이스 목록 열에 추가 데이터베이스가 생깁니다.
여기에 이미지 설명 삽입

디자인에서 데이터 테이블 만들기

앞서 생성한 db_goods 데이터를 더블 클릭하여 엽니다. 개봉 후 색상이 변경되며 더 이상 회색이 아닙니다. 그런 다음 마우스 오른쪽 버튼을 클릭하고 새 테이블을 선택합니다.
여기에 이미지 설명 삽입
테이블의 디자인 규칙에 따라 테이블의 디자인 정보를 입력합니다. 그 중 id 필드는 기본 키와 자동 증가의 두 가지 설정을 추가해야 합니다.
여기에 이미지 설명 삽입
테이블 디자인이 완료되면 저장을 클릭하고 팝업 입력란에 테이블 이름 tb_goods(질문에서 추출)를 입력합니다.
여기에 이미지 설명 삽입
확인을 클릭하면 데이터베이스에 추가 테이블이 나타납니다.
여기에 이미지 설명 삽입

테스트 데이터 추가

tb_goods 데이터 테이블을 두 번 클릭하여 테이블의 미리보기 페이지로 들어갑니다. 패널 하단의 추가 기호를 클릭하여 데이터를 추가합니다.
여기에 이미지 설명 삽입
비고: 데이터를 입력할 때 id 필드는 자체 증가하므로 이 열에 값을 입력할 필요가 없습니다.

데이터베이스 스크립트 내보내기

데이터가 추가되면 시각적 작업을 통해 데이터베이스 스크립트를 내보낼 수 있습니다. 내보낼 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 SQL 파일 덤프를 선택하고 유형은 구조 및 데이터입니다.
여기에 이미지 설명 삽입
데스크탑을 저장 위치로 선택하십시오.
여기에 이미지 설명 삽입
데이터베이스를 내보내는 목적은 현재 디자인된 테이블과 저장된 데이터 내용을 저장하기 위함입니다. 다음에 필요할 때 스크립트를 데이터베이스로 가져와서 사용할 수 있습니다.

프로젝트 실현

동적 웹 프로젝트 만들기

Eclipse를 열고 왼쪽 상단 모서리에 있는 도구 모음을 클릭한 다음 파일 옵션을 찾으십시오. Dynamic Web Project 옵션을 찾아 생성합니다.
여기에 이미지 설명 삽입
해당 옵션이 없으면 마지막 기타 옵션을 찾습니다.
여기에 이미지 설명 삽입
팝업 상자에서 먼저 웹 디렉토리를 찾아 확장하면 동적 웹 프로젝트 옵션을 찾을 수 있습니다.
여기에 이미지 설명 삽입
그런 다음 다음 옵션을 클릭하십시오.
팝업 상자에 프로젝트 이름을 입력합니다. 물론 필요한 경우 다른 기본 구성을 변경하십시오.
여기에 이미지 설명 삽입
프로젝트가 성공적으로 생성된 후 디렉토리 구조는 아래 그림과 같습니다.
여기에 이미지 설명 삽입
프로젝트가 생성된 후 이 경우에 필요한 jar 패키지를 가져옵니다. 각 jar 패키지의 해당 소개는 다음과 같습니다.

항아리 패키지 설명하다
mysql-커넥터-자바-5.1.14.jar mysql 연결을 위한 jar 패키지
mybatis-3.4.6.jar mybatis 데이터베이스 프레임워크가 의존하는 jar 패키지
jstl-1.2.jar jsp 페이지에서 사용되는 jstl 태그 라이브러리
표준-1.1.2.jar jstl 태그 라이브러리와 함께 사용되는 표준 라이브러리

위의 4개의 태그 라이브러리를 프로젝트 종속성 디렉터리, 즉 WebContent 디렉터리 아래 Web-Info의 lib 폴더에 추가합니다.
여기에 이미지 설명 삽입
처음으로 복사할 때 이 태그를 마우스 오른쪽 버튼으로 클릭하여 선택한 다음 빌드 경로를 선택하고 빌드 경로에 추가를 선택해야 합니다. 이러한 jar 패키지를 프로젝트 빌드 경로에 추가합니다. 그렇지 않으면 프로젝트에 적용할 수 없습니다.

마이바티스 구성

프로젝트의 src 디렉터리에 mybaits-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>
		<package name="com.lvan.pojo"/>
	</typeAliases>
	<environments default="devlopment">
		<environment id="devlopment">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/db_goods"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	<!-- 配置映射文件所在的包 -->
	<mappers>
		<package name="com.lvan.mapper"/>
	</mappers>
</configuration>

가장 중요한 것은 두 패키지와 mysql 연결 풀의 구성 정보를 기억하는 것입니다.
구성 파일에 따라 해당 패키지를 만듭니다.
여기에 이미지 설명 삽입
위의 구조와 같습니다.

데이터 테이블을 기반으로 엔터티 클래스 만들기

pojo 패키지 아래에 생성된 해당 엔티티 클래스.
클래스 이름 작명 규칙은 일반적으로 데이터 테이블의 접두사를 제거하고, 후속 단어의 첫 글자를 대문자로 표시하고, 밑줄이 있는 경우 제거하고, 밑줄 다음 첫 글자를 대문자로 표시합니다. 카멜 케이스 명명 규칙을 따릅니다.
예를 들어 tb_goods의 엔터티 클래스 이름이 Goods인 경우
여기에 이미지 설명 삽입
이 간단한 경우와 같이 속성 이름은 필드 이름과 일치해야 합니다. 그러나 데이터 유형 호환성에 주의하십시오.
보통 10진수는 double int에 해당하고 int에 해당하며 다른 문자열은 기본적으로 호환이 가능하지만 String을 아예 사용하지 않는 것이 좋습니다.

엔터티 클래스에서 캡슐화 메서드 생성

씨는 setter 및 getter 메서드를 생성합니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입
생성하려면 아래의 생성 버튼을 선택하십시오.
효과 다이어그램은 다음과 같습니다.
여기에 이미지 설명 삽입

toString 메서드 생성

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
효과 다이어그램은 다음과 같습니다
여기에 이미지 설명 삽입
. 이때 엔터티 클래스가 생성됩니다.

인터페이스 작성

mybatis-config.xml 구성 파일에 따르면 매핑 파일은 com.lvan.mapper 패키지에 작성되어야 하며, 패키지 태그는 검사 범위를 패키지로 선언하는 데 사용됩니다. 매퍼 태그를 사용하는 경우 해당 mapper.xml 파일을 지정해야 합니다 .
여기에 이미지 설명 삽입
매퍼 패키지에서 인터페이스 파일을 만듭니다. 인터페이스 파일의 이름은 다음과 같이
여기에 이미지 설명 삽입
엔터티 클래스 이름 뒤에 Mapper가 붙습니다
여기에 이미지 설명 삽입
. 즉, 인터페이스 파일에서 구현할 메서드만 선언하면 됩니다.
이 경우 요구 사항에 따라 제품 테이블을 추가, 삭제, 수정 및 쿼리해야 합니다. 따라서 제품 신고 조회를 위한 인터페이스는 다음과 같습니다.
여기에 이미지 설명 삽입
다음은 인터페이스의 예입니다.

  1. 검색어 상품은 키워드로 검색되며, 검색어 내용이 빈글이면 전체 검색어입니다.
List<Goods> query(@Param("key")String key);
  1. 제품을 업데이트하려면 제품을 업데이트하려면 엔터티 클래스 개체를 사용하여 업데이트합니다. 즉, 엔터티 클래스 개체가 가진 속성에 따라 테이블의 어떤 필드가 변경되는지를 업데이트합니다.
int updateGoods(Goods goods);
  1. 제품 추가 제품을 추가하려면 엔터티 클래스 개체도 추가해야 하며 개체의 속성을 사용하여 sql 문에서 값을 얻습니다.
int addGoods(Goods goods);
  1. 상품 삭제 상품 삭제는 id를 기준으로, 즉 지정된 번호의 데이터 레코드 삭제
int deleteGoods(@Param("id")String id);
  1. ID에 따라 해당 엔터티 개체를 가져오고 제품 편집 시 제품 정보를 페이지에 에코할 수 있습니다.
Goods getGoodsById(@Param("id")String id);

코드 구조는 다음과 같습니다.
여기에 이미지 설명 삽입
즉, 위의 인터페이스 선언이 완료되면 기본적으로 제품 테이블 관리를 실현할 수 있습니다.

매핑 파일 쓰기

위의 튜토리얼에서 해당 인터페이스는 사례의 필요에 따라 작성되었습니다. 이 섹션의 내용은 위의 인터페이스를 하나씩 구현하는 것입니다.

  1. 인터페이스에 해당하는 매핑 파일을 만들고 접미사 이름은 .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="xxx.xxx.XXXMapper">

</mapper>

참고: 파일 이름은 인터페이스 파일 이름과 일치해야 합니다. 그렇지 않으면 비호환성과 같은 문제가 발생합니다.
2. 네임스페이스 바인딩
인터페이스 파일과 매핑 파일의 파일명을 일관되게 유지해야 하는데, 이는 커플옷을 입는 것으로 이해할 수 있습니다.
여기에 이미지 설명 삽입
3.
인터페이스 쿼리 인터페이스 구현
여기에 이미지 설명 삽입
실현 구현 코드는 다음과 같습니다.

<?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文件就是对应的男朋友,女朋友负责吩咐,男朋友负责做事-->
<mapper namespace="com.lvan.mapper.GoodsMapper">
	<!-- 查询 -->
	<select id="query" resultType="Goods">
		select * from tb_goods where name like concat('%',#{key},'%')
	</select>
</mapper>

업데이트 인터페이스 구현 :
여기에 이미지 설명 삽입
업데이트 인터페이스의 코드는 다음과 같습니다.

	<!-- 更新商品的实现-->
	<update id="updateGoods">
		update tb_goods set
		<if test="name!=null">
			name=#{name},
		</if>
		<if test="price!=0.0">
			price=#{price},
		</if>
		<if test="store_number!=0">
			store_number=#{store_number},
		</if>
		<if test="goods_type!=null">
			goods_type=#{goods_type},
		</if>
		<if test="in_time!=null">
			in_time=#{in_time},
		</if>
		id=#{id}
		where id=#{id}
	</update>

인터페이스 구현 추가 :
여기에 이미지 설명 삽입
구체적인 구현 코드는 다음과 같습니다.

	<!-- 添加商品 -->
	<insert id="addGoods">
		insert int tb_goods(name,price,store_number,goods_type,in_time)
		values (#{name},#{price},#{store_number},#{goods_type},now())
	</insert>
  1. 인터페이스 구현 삭제
    여기에 이미지 설명 삽입
    구현 코드는 다음과 같습니다.
<delete id="deleteGoods">
		delete from tb_goods where id=#{id}
</delete>
  1. ID를 기반으로 지정된 제품 인터페이스 구현을 가져옵니다.여기에 이미지 설명 삽입
    코드는 다음과 같이 구현됩니다.
<!-- 获取指定id的商品 -->
	<select id="getGoodsById" resultType="Goods">
		select * from tb_goods where id=#{id}
	</select>

테스트에 의해 구현된 인터페이스

  1. SqlUtil 툴킷 작성
    com.lvan.util 패키지 생성 및 테스트 클래스 생성
    여기에 이미지 설명 삽입
  2. 테스트에 필요한 도구 클래스를 작성하고
    여기에 이미지 설명 삽입
    구현 코드는 다음과 같습니다.
package com.lvan.util;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlUtil {
	//1.声明静态的SqlSession对象 用于获取mysql连接
	public static SqlSession sqlSession;
	static {
		try {
			//2.读取mybatis配置文件 
			Reader reader=Resources.getResourceAsReader("mybatis-config.xml");
			//3.根据配置对象生成对应的工厂对象 
			SqlSessionFactory sf=new SqlSessionFactoryBuilder().build(reader);
			//4.打开连接
			sqlSession=sf.openSession();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		System.out.println(sqlSession);
	}
}
  1. 테스트 케이스 작성
    테스트 패키지 작성, 테스트 클래스 작성,
    여기에 이미지 설명 삽입
    모든 상품 개체 테스트 및 쿼리
    여기에 이미지 설명 삽입
package com.lvan.test;

import java.util.List;

import com.lvan.mapper.GoodsMapper;
import com.lvan.pojo.Goods;
import com.lvan.util.SqlUtil;

public class Test {
	public static void main(String[] args) {
		//获取接口对象 代理对象
		GoodsMapper goodsMapper=SqlUtil.sqlSession.getMapper(GoodsMapper.class);
		List<Goods> goods=goodsMapper.query("");//传递空值 查询所有
		System.out.println("查询全部:"+goods);
	}
}

실행 스크린샷은 다음과 같습니다.
여기에 이미지 설명 삽입
검색 기능 테스트 사례는 다음과 같습니다.

GoodsMapper goodsMapper=SqlUtil.sqlSession.getMapper(GoodsMapper.class);
		List<Goods> goods=goodsMapper.query("Q");//传递空值 查询所有
		System.out.println("关键词查询:"+goods);

실행 결과는 다음과 같습니다.
여기에 이미지 설명 삽입
다른 기능은 더 이상 테스트하지 않으며 테스터는 인터페이스 요구 사항에 따라 테스트 사례를 작성합니다.

페이지 실현

설명: IndexServlet을 사용하여 구현하고 다른 기능은 매개변수 작업으로 구분됩니다.

먼저 com.lvan.servlet이라는 패키지를 만들고 패키지 아래에 IndexServlet을 만듭니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

기타 불필요한 메서드는 삭제하고 doGet 메서드 하나만 유지

여기에 이미지 설명 삽입

홈페이지 콘텐츠 렌더링

  1. 홈페이지로 이동하는 기능 실현
    구현 단계:
    1.1 글로벌 프록시 개체 정의,
    여기에 이미지 설명 삽입
    코딩 규칙 및 응답 유형 설정
    여기에 이미지 설명 삽입
//设置编码规则
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		//设置响应的内容类型
		response.setContentType("text/html");

1.1 action 파라미터가 존재하지 않는다면 홈페이지로 이동하라는 뜻입니다.
여기에 이미지 설명 삽입
1.2 페이지 작성
Web-content 디렉토리에 index.jsp 페이지 생성
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입
코딩 규칙 변경:
여기에 이미지 설명 삽입
다음과 같이 변경
여기에 이미지 설명 삽입
테이블 태그를 작성하고 사용자는 엔터티 클래스의 속성에 따라 데이터를 렌더링하여 해당 테이블 헤더 및 작업 열을 선언
여기에 이미지 설명 삽입
데이터를 렌더링하기 전에 태그를 가져와야 합니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
페이지 데이터가 실현되도록 c:foreach 태그에 필요한 라이브러리 렌더링 효과
다이어그램은 다음과 같습니다 . 테이블 앞에 검색창이 있고 내용은 다음과 같습니다. 테스트 결과는 다음과 같습니다. 1.4 삭제 작업 페이지에 삭제 버튼을 추가하고 요청 경로가 /프로젝트 이름/서비스 이름임을 확인합니다. 테스트: 4번 항목을 클릭하여 새로 고침을 위해 홈 페이지로 돌아갑니다.
여기에 이미지 설명 삽입


여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입


여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

추천

출처blog.csdn.net/qq_33183456/article/details/123539885