学习Mybatis遇到的错误
学习mybatis错误集合
1.空指针
搭建完环境,编写完代码后,编写测试类测试代码时,报以下信息的错误
查看代码,测试类的etSqlSeeion有问题
继续找getSqlSeeion方法的问题,发现蓝色返回的Session有问题,而蓝色是从红色部分得到的,发现红色部分有灰色,这水说明有没有使用的地方,而红色部分应该是同一个变量
发现是图中又重新给Session定义了类型,导致编程新的变量
2.没有注册Mapper
rg.apache.ibatis.binding.BindingException: Type interface com.dao.StudentDao is not known to the MapperRegistry.的错误
发现是没有在mybatis的配置文件中注册Mapper
3.找不到Mapper的配置
添加以下配置文件
<resources > <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
修改程序后,刷新以下Maven,继续运行
4.没有找到postgresql驱动,这里应该是驱动的路径问题,
这里卡了好久,找不到解决办法,有大咖知道的吗???
项目代码
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>untitled</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>untitled1</module> </modules> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <!-- mysql驱动--> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.3.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <!-- mybatis驱动--> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <resources > <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build> </project>
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <parent> <artifactId>untitled</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>untitled1</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <!-- mysql驱动--> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.3.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <!-- mybatis驱动--> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <resources > <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build> </project>
Mybatisutils
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 java.io.IOException; import java.io.InputStream; public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //获取mybatis第一步 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch (IOException e){ e.printStackTrace(); } } public static SqlSession getSqlSeeion(){ SqlSession sqlSession= sqlSessionFactory.openSession(); return sqlSession; } }
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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="org.postgresql.Driver "/> <property name="url" value="jdbc:postgresql://localhost:5432/postgres?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="postgres"/> <property name="password" value="hap"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/dao/StudentMapper.xml"/> </mappers> </configuration>
Pojo
import java.util.Date; public class Student { private int id; private Date creat_time; private String name; private int score; public Student() { } public Student(int id, Date creat_time, String name, int score) { this.id = id; this.creat_time = creat_time; this.name = name; this.score = score; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Date getCreat_time() { return creat_time; } public void setCreat_time(Date creat_time) { this.creat_time = creat_time; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
StudentDao
import com.pojo.Student; import java.util.List; public interface StudentDao { List <Student> getStudentList(); }
StudentMapper.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.dao.StudentDao"> <select id="getStudentList" resultType="com.pojo.Student"> select * from postgres.study_student </select> </mapper>
StudentTest
import java.util.List; public class StudentTest { @Test public void test(){ //第一步,获取sqlSessiond对象 SqlSession sqlsession= MybatisUtils.getSqlSeeion(); StudentDao studentdao= sqlsession.getMapper(StudentDao.class); List<Student> studentlist= studentdao.getStudentList(); for (Student student : studentlist) { System.out.println(student); } sqlsession.close(); } }
出来混总是要还的