mybatis这些报错是怎么回事?求解!!
项目结构
db.properties
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
mysql.username=root
mysql.password=666666
mybatis-config.xml
configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<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>
<package name="mapper"/>
mappers>
configuration>
CustomerMapper.xml
mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.CustomerMapper">
<select id="findCustomerByNameAndJobs"
parameterType="pojo.Customer"
resultType="pojo.Customer">
select * from t_customer where 1=1
<if test="username !=null and username !=''">
and username like concat('%',#{username}, '%')
if>
<if test="jobs !=null and jobs !=''">
and jobs= #{jobs}
if>
select>
mapper>
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.examplegroupId>
<artifactId>Chapter3-4artifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>17maven.compiler.source>
<maven.compiler.target>17maven.compiler.target>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.11version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>compilescope>
dependency>
dependencies>
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>truefiltering>
resource>
resources>
build>
project>
UserMapper.xml
mapper
PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pojo.User">
<select id="findById" parameterType="int"
resultType="pojo.User">
select * from users where uid = #{id}
select>
mapper>
MyBatisTest测试类
package Test;
import pojo.Customer;
import utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MyBatisTest {
/**
* 根据客户姓名和职业组合条件查询客户信息列表
*/
@Test
public void findCustomerByNameAndJobsTest() {
// 通过工具类获取SqlSession对象
SqlSession session = MyBatisUtils.getSession();
// 创建Customer对象,封装需要组合查询的条件
Customer customer = new Customer();
customer.setUsername("jack");
customer.setJobs("teacher");
// 执行SqlSession的查询方法,返回结果集
List customers = session.selectList("mapper"
+ ".CustomerMapper.findCustomerByNameAndJobs", customer);
// 输出查询结果信息
for (Customer customer2 : customers) {
System.out.println(customer2);
}
session.close();
}
}
持久化类Customer
package pojo;
public class Customer {
private Integer id; // 主键id
private String username; // 客户名称
private String jobs; // 职业
private String phone; // 电话
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Customer [id=" + id + ", username=" + username +
", jobs=" + jobs + ", phone=" + phone + "]";
}
}
运行测试类就会出现第一个图片里的报错 怎么解决呢?求详解!
你把你那个mybatis-config.xml改一下试试
<mappers>
<!-- 通过resource属性引入classpath路径的相对资源-->
<mapper resource="mapper/CustomerMapper.xml"/>
</mappers>
你的mapper.xml对应的java文件呢?
1、MyBatisUtils.getSession 这里面有getSession有没有对mapper的加载
2、你这个应该需要接口定义啊 参考https://blog.csdn.net/qq_15037825/article/details/105142593
没看到你的mapper层的接口呢?
基本是少Java的文件吧。先把目录结构整理一下吧,缺东西。
可以看一下我之前整理的:
https://blog.csdn.net/lydms/article/details/119246809
没有定义接口
不知道你这个问题是否已经解决, 如果还没有解决的话: