Mybtis 学习笔记《Maven + Mybtis + JUnit4 基本配置》

版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/87704993


这是一个最简单的 Mybatis 配置 Demo。因为通常情况我们肯定是用 SSM,所以本篇的目的只是把 Mybatis 跑起来。

  1. Eclipse 用 Maven 创建一个 Web项目
  2. 添加必要的依赖包
  3. 添加测试数据表
  4. 添加测试代码 entity、mapper.java、mapper.xml
  5. JUnit4测试通过

目录结构

在这里插入图片描述

Maven 配置文件 Pom.xml

都是必须的依赖包
/mybatisdemo/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jerry</groupId>
  <artifactId>mybatisdemo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>mybatisdemo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
	<properties>
		<junit.version>4.12</junit.version>
		<mybatis.version>3.4.6</mybatis.version>
		<mysql.version>5.1.18</mysql.version>
	</properties>
	
	<dependencies>
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>
			
		<!-- Mybatis -->
		<dependency>
		  <groupId>org.mybatis</groupId>
		  <artifactId>mybatis</artifactId>
		  <version>${mybatis.version}</version>
		</dependency>
		
		<!-- DataBase -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		
	</dependencies>
  
  <build>
    <finalName>mybatisdemo</finalName>
   	<plugins>  
		<plugin>  
	        <groupId>org.apache.maven.plugins</groupId>  
	        <artifactId>maven-compiler-plugin</artifactId>  
	        <version>3.1</version>  
	        <configuration>  
	            <source>1.7</source>  
	            <target>1.7</target>  
	        </configuration>  
	    </plugin>  
	</plugins> 
  </build>
</project>

数据库参数 jdbc.properties

/mybatisdemo/src/main/resources/jdbc.properties

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/jerry?serverTimezone=GMT%2B8
mysql.username=root
mysql.password=root

Mybatis 配置文件

/mybatisdemo/src/main/resources/config/mybatis.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>
	
	<!-- 加载顺序 :properties结点中的property 》 jdbc.properties文件 -->
	<properties resource="jdbc.properties">
		<!-- 这里的配置会被jdbc.properties 覆盖,推荐不要写在这里,而是写在 jdbc.properties 文件中 -->
		<property name="mysql.driver" value="com.mysql.jdbc.Driver个屁"/> 
		<property name="mysql.url" value="jdbc:mysql://localhost:3306/jerry?useUnicode=true&amp;characterEncoding=utf-8"/>
		<property name="mysql.username" value="root个毛的用户名"/>
		<property name="mysql.password" value="这是一个错误密码"/>
	</properties>
	
	<!-- 类型别名 : 扫描指定的包,为其下的实体类创建别名 -->
	<typeAliases>
		<package name="com.jerry.mybatisdemo.entity" /> 
	</typeAliases>
	
	<!-- 配置数据源 -->
	<environments default="development">
	  <environment id="development">
	    <transactionManager type="JDBC"/>
	    <dataSource type="POOLED">
			<property name="driver" value="${mysql.driver}"/> 
			<property name="url" value="${mysql.url}"/>
			<property name="username" value="${mysql.username}"/>
			<property name="password" value="${mysql.password}"/>
	    </dataSource>
	  </environment>
	</environments>
  
	<mappers>
		<mapper resource="com/jerry/mybatisdemo/mapper/PoemMapper.xml"/>
	</mappers>
  
</configuration>

测试数据

数据表 poem

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for poem
-- ----------------------------
DROP TABLE IF EXISTS `poem`;
CREATE TABLE `poem` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `title` varchar(16) NOT NULL COMMENT '诗词标题',
  `content` varchar(255) NOT NULL COMMENT '诗词内容',
  `author` varchar(16) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of poem
-- ----------------------------
INSERT INTO `poem` VALUES ('1', '痴情癫', '<p>多情黯叹痴情癫,痴情苦笑多情难。</p><p>相思自古无良药,从来独步赴黄泉。</p', '笑虾');
INSERT INTO `poem` VALUES ('2', '爱云说', '<p>一壶泪,暗淡醇香味。</p><p>化作万樽与谁对?</p><p>忧举杯,乐举杯,地老天荒只一醉。</p><p>欲哭时,男儿无泪。</p><p>千般相思苦。</p><p>杯中汇...</p>', '笑虾');

实体类

/mybatisdemo/src/main/java/com/jerry/mybatisdemo/entity/Poem.java

package com.jerry.mybatisdemo.entity;

public class Poem {
    private Long id;
    private String title;
    private String content;
    private String author;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title == null ? null : title.trim();
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content == null ? null : content.trim();
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author == null ? null : author.trim();
    }
	@Override
	public String toString() {
		return "[" + id + "] " + title + " - " + author + " : " + content;
	}
}

mapper 接口

/mybatisdemo/src/main/java/com/jerry/mybatisdemo/mapper/PoemMapper.java

package com.jerry.mybatisdemo.mapper;

import com.jerry.mybatisdemo.entity.Poem;

public interface PoemMapper {
    Poem selectByPrimaryKey(Long id);
}

mapper 配置

/mybatisdemo/src/main/java/com/jerry/mybatisdemo/mapper/PoemMapper.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.jerry.mybatisdemo.mapper.PoemMapper">
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultType="poem">
    select id, title, content, author
    from poem
    where id = #{id,jdbcType=BIGINT}
  </select>
</mapper>

测试用例

/mybatisdemo/src/test/java/com/jerry/mybatisdemo/mapper/PoemMapperTest.java

package com.jerry.mybatisdemo.mapper;

import static org.junit.Assert.assertEquals;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import com.jerry.mybatisdemo.entity.Poem;

public class PoemMapperTest {

	private static SqlSession sqlSession;
	private static PoemMapper poemMapper;
	
    @BeforeClass
	public static void beforeClass() throws Exception {
		
    	String resource = "config/mybatis.xml";
    	InputStream inputStream = Resources.getResourceAsStream(resource);
    	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    	sqlSession = sqlSessionFactory.openSession();
    	
		poemMapper = sqlSession.getMapper(PoemMapper.class);
	}
	
	@Test
	public void testSelectList() {
		Poem poem = poemMapper.selectByPrimaryKey(1L);
		assertEquals("id1 的诗名应该叫", poem.getTitle(), "痴情癫");
		System.out.println(poem);
	}
	
	@AfterClass
	public static void afterClass() throws Exception {
		sqlSession.close();
	}
}

在这里插入图片描述

题外话

  • 以上获取 PoemMapper 是测试写法。正常在SSM中,我们会通过 Spring 将 Mapper 注入到 Service 直接用就行了。
@Service
public class PoemService implements IPoemService {
	@Resource
	private PoemMapper poemMapper;

	@Override
	public Poem getById(Long id) {
		return poemMapper.selectByPrimaryKey(id);
	}
}

猜你喜欢

转载自blog.csdn.net/jx520/article/details/87704993