mybatis学习02:第一个Mybatis程序
-
第一个Mybatis程序:
-
思路:搭建环境-->导入mybatis-->编写代码-->测试!
-
搭建环境:
-
搭建数据库;
-- 创建数据库
CREATE DATABASE `mybatis`;
-- 使用数据库
USE `mybatis`;
-- 创建表
CREATE TABLE `user`(
`id` INT NOT NULL ,
`name` VARCHAR(50) DEFAULT NULL,
`pwd` VARCHAR(50),
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
-- 插入数据
INSERT INTO `user` (`id`,`name`,`pwd`)VALUES(1,'demo','1111111');
INSERT INTO `user` (`id`,`name`,`pwd`)VALUES(2,'demo1','123456');
INSERT INTO `user` (`id`,`name`,`pwd`)VALUES(3,'demo2','1111111');
-
新建项目:
-
新建一个普通maven项目;
-
删除src目录 ( 删除后当前项目就可以当作父工程 );
-
导入依赖
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
-
-
创建一个Model(模块):
-
编写mybatis核心配置文件:mybatis-config.xml
-
编写mybatis工具类;
/**
* SqlSessionFactory-->sqlSession
*
*/
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory ;
static {
try {
//使用Mybatis第一步:获取SqlSessionFactory对象;
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实例了;
//SqlSession完全包含了面向数据库执行SQL命令的所有方法
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
-
-
编写代码:
-
实体类
/**
* pojo实体类
*/
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
-
Dao接口
public interface UserDao {
List<User> getUserList();
} -
接口实现类:由原来的UserDaoImpl转换为一个Mapper配置文件
-
-
测试!
-
注意点1:org.apache.ibatis.binding.BindingException:
-
Type interface com.xxx.dao.UserDao is not known to the MapperRegistry.
-
MapperRegistry是什么:核心配置文件中注册mappers
-
产生原因:mapper的核心配置文件没有注册该mapper.xml
<!--每一个Mapper.xml都需要在mybatis核心配置文件中注册 -->
<mappers>
<mapper resource="com/ljxdemo/dao/UserMapper.xml"/>
</mappers>
-
-
注意点2:java.lang.ExceptionInInitializerError
-
The error may exist in com/ljxdemo/dao/UserMapper.xml
-
产生原因:因为该Mapper配置文件在java下面,maven的pom文件build的时候,需要配置该资源;(maven是约定大于配置)
<!--在build中配置resources,来防止我们资源导出失败的问题--> <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>
-
-
测试类:
public class UserDaoTest {
-
可能会遇到的问题:
-
配置文件没有注册;
-
绑定接口错误;
-
方法名不对;
-
返回类型不对;
-
Maven导出资源问题;
-
-
-
-
分类:
07-Mybatis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律