环境搭建
mybatis
是持久层的框架,持久层总图如下:
# 环境搭建
首先maven工程报错了,那么可能是仓库没配好,看:https://www.cnblogs.com/phpdragon/p/7216626.html (opens new window)
环境
JDK1.8
Mysql 5.7
maven 3.6.1
# MyBatis讲解
- 优秀的持久层框架。
- 可以使用
XML
或注解来配置 - 几乎避免了所有的代码
- 本来是
apache
的一个开源项目iBatis
,2010年由apache software foundation
迁移到了google code
,并且修改名字为mybatis
# 进行基本的环境搭建,跑个流程
首先打开idea选择maven工程,不需要create,直接点击下一步,填写好名字
填写配置文件
<?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>com.bean</groupId> <artifactId>Mybatis01</artifactId> <version>1.0-SNAPSHOT</version> <!-- 设定导出文件格式--> <packaging>jar</packaging> <!-- 导入包--> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> </dependencies> </project>
数据库建表
CREATE DATABASE Mybatis; use Mybatis; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL COMMENT '用户名称', `birthday` datetime default NULL COMMENT '生日', `sex` char(1) default NULL COMMENT '性别', `address` varchar(256) default NULL COMMENT '地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');
建立domain,将表与类对应
package com.bean.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public User(Integer id, String username, Date birthday, String sex, String address) { this.id = id; this.username = username; this.birthday = birthday; this.sex = sex; this.address = address; } public User() { } 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 Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }
编写持久层接口 IUserDao
package com.bean.dao; import com.bean.domain.User; import java.util.List; /** * IUserDao接口就是我们常说的持久层接口,也可以写作UserDao或者UserMapper */ public interface IUserDao { /** * 查询所有用户 * @return List<User> */ List<User> findAll(); }
编写持久层接口的映射文件 IUserDao.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--> <mapper namespace="com.bean.dao.IUserDao"> <!-- 这个id不能瞎写,是IUserDao里面的方法名 这个resultType是表对应的类,结果类型 里面的语句是要执行的语句 --> <select id="findAll" resultType="com.bean.domain.User"> select * from user </select> </mapper>
编写 SqlMapConfig.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"> <!--注意上面的配置--> <!--这个文件名字叫什么无所谓,但是配置的是什么很重要,配置的是啥呢,配置的是mybatis的环境--> <configuration> <!-- 首先来配置mybatis的环境,叫不叫mysql无所谓,但是下面必须对这个名字解释--> <environments default="mysql"> <!-- 配置mysql的环境,对mysql进行解释 --> <environment id="mysql"> <!--配置事务的类型--> <transactionManager type="JDBC"></transactionManager> <!--配置连接数据库的信息,用的是数据源(连接池), 这里的driver,url,username,password应该都熟悉吧 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/Mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--接下来指定映射配置文件的位置,映射配置文件是指的每个dao的独立的配置文件--> <mappers> <mapper resource="com/bean/dao/IUserDao.xml"/> </mappers> </configuration>
注意一件事:
<mapper></mapper>
的配置可以是resource
,可以是class
一般我们使用
resouce
来进行配置的时候使用的是xml
文档使用
class
进行配置的时候使用的是注解开发
# 环境搭建的注意事项
- 在
Mybatis
中的dao
层主要叫做Mapper
,所以这里的IUserDao
也叫做IUserMapper
- idea中创建目录和包是不一样的
- 包(Package):
com.bean.dao
是三级结构 - 目录(Directory):
com.bean.dao
是一级目录
- 包(Package):
mybatis
的映射配置文件位置必须和dao
接口的包结构相同,也就是上面第六步的注意事项- 映射配置文件的
mapper
标签namespace
属性的取值必须为dao
接口的全限定类名 - 映射配置文件的操作配置(select),id属性必须是
dao
接口的方法名
当我们在遵从了3,4,5点之后,我们在开发中就无需写
dao
的实现类,也就是说写完接口我们的操作就结束了
上次更新: 2024/11/02, 21:46:46