搭建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”请参考;

https://www.cnblogs.com/ithc/p/13943562.html

如果觉得对您有用的话希望您能留下一个赞,您的赞就是我学习的动力!希望我们都能学有所成啊!
要继续努力啊!打工人!

posted @ 2020-11-08 10:42  lhcexplore  阅读(118)  评论(0)    收藏  举报