搭建Mybatis框架,并测试
我也是初学Mybatis希望可以帮到你呀
介绍
Mybatis是一个基于java语言的持久层的框架;
持久层:与数据库交互;
业务层:处理业务需求;
表现层:数据展示;
Spring的JabcTemplate中封装了一些关于数据库交互的方法,但有些细节的东西还是没有涵盖,毕竟是封装不是一套框架;Mybatis则是一套与数据库交互的涵盖细节的框架,它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程,它使用了ORM思想实现了结果集的封装。
开始搭建
1. 新建一个空的Maven项目,在你的maven项目中导入(前两个必须有)依赖(pom);
<1>Mybatis依赖这是毋庸置疑的
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<2>既然是与数据库交互的框架肯定要有数据库(这里是mysql)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<3>还有两个依赖(pom)是日志记录和单元测试(测试需要)
<!--日志记录-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
2. 创建数据库表,以下是用sql语句创建表和插入数据;
<1>创建名称为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;
<2>向该表插入数据
insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values
(1,'老王','2018-02-27 17:47:08','男','北京'),
(2,'小王','2018-03-02 15:09:37','女','北京'),
(3,'小二','2018-03-04 11:34:34','女','北京'),
(5,'老刘','2018-03-04 12:04:06','男','北京'),
(6,'老王','2018-03-07 17:37:26','男','北京'),
(8,'小马','2018-03-08 11:44:00','女','北京');
3. 创建user实体类(在java包下)com.Mybatis.domain;
package com.Mybatis.domain;
import java.util.Date;
public class User {
//要与数据库中的字段名相同
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
//为变量添加getter and setter方法
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;
}
//添加toString方法
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
4. 创建IUserDao接口在com.Mybatis.Dao下;
package com.Mybatis.Dao;
import com.Mybatis.domain.User;
import java.util.List;
public interface IUserDao {
/*
* 查询所有操作
* */
List<User>findAll();
}
5. 写配置;
<1>在resources下创建SqlMapConfig.xml,创建好是里面空的,需要导入配置(config)文件的约束
config:
<?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">
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>
<!--默认值/名字-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"/>
<!--配置数据源(连接池)有三个-->
<dataSource type="POOLED">
<!--配置连接数据库的四个基本信息;驱动、数据库地址、用户名、密码-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis-stu"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射文件指的是每个dao独立的配置文件-->
<mappers>
<mapper resource="com/Mybatis/Dao/IUserDao.xml"/>
</mappers>
</configuration>
<2>在resources目录下创建与Dao层相同层级的目录(是三层目录哦!)并创建IUserDao.xml文件;
导入映射(mapper)配置头:
<?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">
IUserDao.xml:
<?xml version="1.0" encoding="UTF-8"?> <!--导入Mapper的约束文件-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--配置映射-->
<mapper namespace="com.Mybatis.Dao.IUserDao">
<!--配置查询所有 resultType:sql查询后返回的结果集封装到这里-->
<select id="findAll" resultType="com.Mybatis.domain.User">
select * from user;
</select>
</mapper>
<3>将log4j.properties文件复制到resourecs目录下
# 将根类别优先级设置为debug,并将其追加器设置为CONSOLE,LOGFILE
log4j.rootCategory=debug, CONSOLE, LOGFILE
# 将企业日志记录器类别设置为FATAL,将其唯一的附加程序设置为CONSOLE。
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# 控制台使用PatternLayout设置为一个ConsoleAppender。
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m
# LOGFILE被设置为使用PatternLayout的文件追加器
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m
6. 你可以运行你的测试类代码了!控制台是不是输出的你数据库中的数据了呢;
User{id=2, username='小王', birthday=Fri Mar 02 15:09:37 CST 2018, sex='女', address='北京'}
User{id=3, username='小二', birthday=Sun Mar 04 11:34:34 CST 2018, sex='女', address='北京'}
User{id=5, username='老刘', birthday=Sun Mar 04 12:04:06 CST 2018, sex='男', address='北京'}
User{id=6, username='老王', birthday=Wed Mar 07 17:37:26 CST 2018, sex='男', address='北京'}
User{id=8, username='小马', birthday=Thu Mar 08 11:44:00 CST 2018, sex='女', address='北京'}
7.环境搭建的注意事项: ;
第一个:创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的
第二个:在idea中创建目录的时候,它和包是不一样的
包在创建时:com.itheima.dao它是三级结构
目录在创建时:com.itheima.dao是一级目录
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
8. 补充:如果出现 “Error : java 不支持发行版本5”请参考;
如果觉得对您有用的话希望您能留下一个赞,您的赞就是我学习的动力!希望我们都能学有所成啊!
要继续努力啊!打工人!

浙公网安备 33010602011771号