Mybatis之环境搭建及思想分析

历史了解:
MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github 。因此,现在要想下载Mybatis,要去Github下载,别找错地方了。官方文档网址:http://www.mybatis.org/mybatis-3/zh/index.html
GitHub下载网址:https://github.com/mybatis/mybatis-3。
Mybatis简介:
MyBatis 是一款优秀的持久层框架。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
思想理解:
其实,关于Mybatis避免jdbc复杂代码,用简单xml或者注解来配置,就是Mybatis的主要作用,说白了,所谓框架,就是工具嘛,就是为了简化开发过程,把那些重复且复杂的步骤规定好,开发人员就只需要关注具体功能的实现就行了。打个比方,都去银行办理过业务吧,各种业务,要写各种信息,前台都会发一张表格,打几个勾或者简单填表,就把信息写好了。那银行为啥不发张白纸给你呢?让你自己画呢?因为那些复杂的选项不一定都能想起来,而且关键点在于,那些选项的框架都是死的,用的着给你一张白纸自己画吗?填表的人只需要关注具体事件就行了。所以这就是框架的作用和思想。
上面解释为什么要用Mybatis框架的原因应该比较容易理解。那么,为什么称Mybatis为一款优秀的持久层框架?啥叫持久?啥叫持久层?所谓持久化,就是字面意思,持久保存的意思,为什么Mybatis要讲持久化呢?那是因为,它是和数据库打交道的,说数据库是持久的,那是因为内存是不持久的。举个例子,假设你在写论文的时候,写了一晚上,突然电脑死机了,而你又忘记保存了,那重启后,东西全都没了,这就是内存的不持久性,内存是断电即失的。数据库的持久性是因为数据库的内容是存在外存的,不会断电即失。而所谓持久层,层就是实现某个功能的代码块,比如传统开发中的dao层,而Mybatis就是来实现dao层的功能的。

环境搭建

软件和准备工作:
jdk
MySQL
maven
IDEA
、先准备一个测试数据库,来复习一下创建数据库表的代码吧:

CREATE DATABASE `mybatis`;

USE `mybatis`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`name`,`pwd`) values (1,'王五,'123456'),(2,'张三','abcdef'),(3,'李四','987654');

、导入jar包,需要两个,直接maven配置:

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.5.2</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.47</version>
</dependency>

、在resources中写第一个配置文件,主要是配置链接数据库的一些参数:

<?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">
<configuration>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/dao/userMapper.xml"/>
   </mappers>
</configuration>

注意:mapper标签中,是第二个配置文件的路径,第二个配置文件中写具体SQL语句。
四、用工厂模式写一个工具类,读取上面的链接数据库参数的配置文件,并返回一个SqlSession对象:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {

   private static SqlSessionFactory sqlSessionFactory;

   static {
       try {
           String resource = "mybatis-config.xml";
           InputStream inputStream = Resources.getResourceAsStream(resource);
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      } catch (IOException e) {
           e.printStackTrace();
      }
  }

   //获取SqlSession连接
   public static SqlSession getSession(){
       return sqlSessionFactory.openSession();
  }
}

、写测试的实体类:

public class User {
   
   private int id;  //id
   private String name;   //姓名
   private String pwd;   //密码
   
   //构造,有参,无参
   //set/get
   //toString()
}

、写查询数据库的接口:

public interface UserMapper {
   List<User> selectUser();
}

、编写mapper的配置文件:这就是第二个配置文件,第一个配置文件中写的是连接数据库的一些参数,这两个配置文件要区分清楚。这第二个配置文件中写的包括:namespace其实就是对应接口的位置,select标签对应查询操作,resultType对应从数据库中返回的数据封装成的实体类对象。其实,第二个配置文件就是来处理数据库操作了,来对应你写的接口和接口中的方法,具体方法对应的实体对象也在这里配置,最后在里面写上具体查询数据库的SQL语句。

<?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 namespace="com.dao.UserMapper">
 <select id="selectUser" resultType="com.pojo.User">
  select * from user
 </select>
</mapper>


最后,写个测试类测试一下,我们Mybatis的环境是否搭建成功:
简单来讲一下运行过程:
首先,通过写的工厂类,来获取SqlSession对象,工厂类中读取了第一个配置文件,第一个配置文件中写了连接数据库的参数,因此SqlSession其实就是对应数据库的连接。然后,SqlSession对象调用selectlist,因为第一个配置文件中配置了第二个配置文件的路径:

<mappers>
       <mapper resource="com/dao/userMapper.xml"/>
   </mappers>

因此SqlSession可以获取第二个配置文件的信息,第二个配置文件中写明了对应的接口和方法以及返回的实体类,然后根据第二个配置文件中SQL语句,执行数据库查询,返回user对象。

public class MyTest {
   @Test
   public void selectUser() {
       SqlSession session = MybatisUtils.getSession();
       List<User> users = session.selectList("com.mapper.UserMapper.selectUser");
       for (User user: users){
           System.out.println(user);
      }
       session.close();
  }
}

最后,因为第二个配置文件没写在resources中,有可能出现maven资源静态过滤的问题,所以,需要在maven中多配置一下资源加载:

<build>
	<resources>
   		<resource>
       		<directory>src/main/java</directory>
       		<includes>
           		<include>**/*.properties</include>
           		<include>**/*.xml</include>
       			</includes>
       			<filtering>true</filtering>
  		 </resource>
   		<resource>
       		<directory>src/main/resources</directory>
       		<includes>
           		<include>**/*.properties</include>
           		<include>**/*.xml</include>
       		</includes>
       <filtering>true</filtering>
	   </resource>
	</resources>
</build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值