版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/87704993
Mybtis 学习笔记《Maven + Mybtis + JUnit4 基本配置》
这是一个最简单的
Mybatis
配置
Demo
。因为通常情况我们肯定是用
SSM
,所以本篇的目的只是把
Mybatis
跑起来。
- Eclipse 用 Maven 创建一个 Web项目
- 添加必要的依赖包
- 添加测试数据表
- 添加测试代码 entity、mapper.java、mapper.xml
- 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&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);
}
}