[Mybatis学习] 1.环境搭建与起步

-环境搭建

1.使用maven创建项目

在pom.xml中添加项目依赖,这里项目最少需要配置mybatis和数据库的相关依赖即可,非常的easy

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>    

初次使用时相关的问题也有不少,比如jar包下载过慢啊,甚至因为网络原因maven连接不到仓库的问题,修改一下maven中的setting.xml试一下。

查看项目确认是否导包完成。

 junit和log4j是用来测试和打印日志的,通过pom.xml的dependency的标签进行配置。

2.起步

为了节省各位看客老爷们的时间,先贴一张图,如果明白的话后面就不用再看了:

准备工作

创建数据库-表,bean类和Dao接口

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;
建表sql
 1 package mybatis.CRUD.bean;
 2 
 3 
 4 import java.util.Date;
 5 
 6 public class User {
 7     private int id;
 8     private String username;
 9     private Date birthday;
10     private String sex;
11     private String address;
12 
13     //生成的get和set方法
14 
15     @Override
16     public String toString() {
17         return "User{" +
18                 "id=" + id +
19                 ", username='" + username + '\'' +
20                 ", birthday=" + birthday +
21                 ", sex='" + sex + '\'' +
22                 ", address='" + address + '\'' +
23                 '}';
24     }
25 }
User
package mybatis.CRUD.dao;

import mybatis.CRUD.bean.QueryBean;
import mybatis.CRUD.bean.User;

import java.util.List;

public interface IUserDao {
    public List<User> findALL();
}

配置Mybatis配置文件

既然jar包已经导入,下一步,就如同其他框架一样,进行xml的配置步骤:

第一个配置文件 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">

这是config配置文件的头部,也不是一定是这个样子的,如果你使用的是mybatis4.X的版本,一定要注重头部是否有变化。

着是一个<configuration>标签和两个子标签<environments><mappers>标签

<configuration>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_study?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="12345"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mybatis/CRUD/IUserDaoMapper.xml"/>
        <mapper resource="mybatis/CRUD/IRealUserDaoMapper.xml"/>
    </mappers>
</configuration>
SqlMapConfig.xml

  

 注意:Mysql 8.X driverurl的写法和5.X是不同的。而且注意‘&’在xml文件中的转义‘&amp’

然后就是配置mapper,为我们的UserDao接口创建一个Mapper,然后登记在SqlMapConfig中。

IUserDaoMapper.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中写一个findALL方法的条目

<mapper namespace="mybatis.CRUD.dao.IUserDao">
    <select id="findALL" resultType="mybatis.CRUD.bean.User">
        SELECT * FROM user;
    </select>
</mapper>

现在其实已经完事大吉了,我们可以编写一个测试方法来测试他们看能不能正常的读数据

public static void main(String[] args)throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }

运行结果:

 总结:

其实从SqlMapConfig开始画起有让人摸不到头脑,但是如果仔细研究一下main函数中的代码,还是非常容易理解上面这张图的。

用IO流读入SqlMapConfig,也就是Mybatis的主配置---》然后加载Mappers中Mapper---》然后就是创建factory生产session---》由于接口不能产生对象,利用session产生一个代理对象---》代理的对象调用findALL----》找到配置中的sql语句和返回类型---》剩下的就交给框架了---》最后就是打印和关闭session和流;结束。

猜你喜欢

转载自www.cnblogs.com/YFEYI/p/13184289.html