您的位置:首页 > 数据库 > MySQL

mybatis+maven+mysql 项目简单搭建与junit空指针异常解决办法

2018-03-20 21:49 537 查看
前面maven项目新建与配置与各种可能出现的问题 可以参考 http://blog.csdn.net/frank_hsu_/article/details/79423420 这里就不赘述了。
表信息CREATE TABLE `person_test` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`NAME` char(10) DEFAULT NULL,
`GENDER` int(1) DEFAULT NULL,
`ADDRESS` varchar(50) DEFAULT NULL,
`BRITHDAY` date DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
项目新建完成后修改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</groupId>
<artifactId>mybatis_test</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis_test Maven Webapp</name>
<url>http://maven.apache.org</url>

<dependencies>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>

<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
</dependencies>

<build>
<finalName>mybatis_test</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
 在src/main/resources 中新建 MyBatisCfg.xml 这里的事务后期会交由spring进行管理<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/mapper/PersonTestMapper.xml"/>
</mappers>
</configuration>在src/main/java 中新建 package : com.mybatis.mapper
编写 PersonTestMapper.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">
<!-- namespace :映射文件的命名空间 规范是映射文件包的全路径 -->
<mapper namespace="com.mybatis.mapper.PersonTestMapper">
<!-- parameterType 查询类型 resultType 返回类型一般包装成类-->
<select id="selectPersonById" parameterType="java.lang.Integer" resultType="com.mybatis.model.Person">
select * from person_test where id = #{id}
</select>
</mapper>新建 package : com.mybatis.model 并建立实体类 Person.javapackage com.mybatis.model;

import java.util.Date;

public class Person {

private Integer id;
private String name;
private Integer gender;
private String address;
private Date brithday ;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}

@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", gender=" + gender + ", address=" + address + ", brithday="
+ brithday + "]";
}

}在src/test/java 建包 com.mybatis.test   添加测试类mybatisTest.javapackage com.mybatis.test;

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.Before;
import org.junit.Test;

import com.mybatis.model.Person;

public class mybatisTest {

SqlSessionFactory sessionFactory;

@Before
public void setUp() throws Exception {
// 初始化
InputStream inputStream = Resources.getResourceAsStream("MyBatisCfg.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}

@Test
public void test() {
// 创建SqlSession
SqlSession sqlSession = sessionFactory.openSession();
// 命名空间com.mybatis.mapper.PersonTestMapper+.selectPersonById 找到对应SQL,傳入參數爲1
try {
Person person = sqlSession.selectOne("com.mybatis.mapper.PersonTestMapper.selectPersonById", 1);
System.out.println(person);
} finally {
sqlSession.close();
}
}

}
项目右键->Run As->JUnit Test,可以看到成功输出
Person [id=1, name=刘备, gender=1, address=蜀国, brithday=Wed Mar 21 00:00:00 CST 2018]

注意今天进行junit测试的时候出现了下面的错误(单纯进行某个某个方法出现下面的错误,如果都某个类进行测试,还不会出现)



下面给出解决方案1.首先把junit4.4.jar的包 Remove 掉



2.然后 Add Library 选择如下



3.点击Next  最后点击选择  Junit4   最后OK 问题就解决了(网上也有说,把Junit的包排到前面也可以解决该问题的)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: