手把手教你搭MyBatis框架

MyBatis简介

MyBatis的前身叫iBatis,是一个持久层的框架,是apache下的顶级项目。本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架,MyBatis可以将向 preparedStatement 中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)。MyBatis 移除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。

 

需要使用的Jar包:

mybatis-3.4.6.jar(mybatis核心包)

mybatis-spring-1.0.0.jar(与Spring结合包)

Mybatis的运行环境(jar包)下载

mybaits的代码由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases

下载完成mybatis-3.4.6.zip解压即可 

mybatis-3.4.6.jar:mybatis的核心包

lib:mybatis的依赖包

mybatis-3.4.6.pdf:mybatis使用手册

MyBatis环境搭建步骤

所需jar包:

log4j-1.2.16.jar

mybatis-3.2.2.jar

mysql-connector-java-5.1.0-bin.jar

项目结构:

1、新建JavaWeb项目

2、导入jar包,WebContent/WEB-INF/lib文件夹下,然后全部选中所有jar包,右键build path构建一下即可。

如果你是使用maven构建工程的话,那就对应在pom.xml文件中添加对应依赖即可。

3、项目 → 右键 → new → source folder 创建包资源管理器 → 这里创建的是 resources

4、在 resources 文件夹下创建文件名为 log4j.properties 的文件 复制如下代码,保存:

# Global logging configuration
# 开发环境下,日志级别要设置成DEBUG或者ERROR
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis默认使用log4j作为输出日志信息。

5、在 resources 文件夹下创建文件名为 mybatis-config.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">
 
 <configuration>
     <!-- 和spring整合后 environments配置将废除-->
 	<!-- 引入 database.properties 文件  -->
 	<properties resource="database.properties"></properties>
 	<!-- 配置log4j,配置后后台会自动对SQL语句输入 -->
 	<settings>
 		<setting name="logImpl" value="LOG4J"/>
 	</settings>
 	
 	<environments default="development">
 		<environment id="development">
 			<!-- 配置事务管理,此处采用JDBC的事务管理 -->
 			 <transactionManager type="JDBC"/>
 			 <!-- 数据库连接池,配置数据库连接信息 -->
			 <dataSource type="POOLED">
				 <property name="driver" value="${driver}"/>
				 <property name="url" value="${url}"/>
				 <property name="username" value="${user}"/>
				 <property name="password" value="${password}"/>
			 </dataSource>
 		</environment>
 	</environments>
 	
 	<mappers>
 		<!-- resource:dao层映射的路径 -->
 		<mapper resource="com/yuntu/dao/user/UserMapper.xml"/>
 	</mappers>
 </configuration>

mybatis-config.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。

6、在 resources 文件夹下创建文件名为 database.properties 的数据库配置文件

driver=com.mysql.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
url=jdbc:mysql://127.0.0.1:3306/SMBMS?useUnicode=true&characterEncoding=utf-8
user=root
password=123456

7、创建实体类(POJO)

8、创建Dao层,新建SQL映射文件(UserMapper.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">
 
 <!--
     namespace:命名空间,作用为,对sql进行分类化管理,理解sql隔离,
     注意:使用mapper代理方法开发,namespace有特殊作用
 -->
 <mapper namespace="test">
    <!--在映射文件中配置sql-->
    <!--
        通过select执行数据库查询
        id:标识映射文件的sql
        将sql语句封装到mappedStatement对象中,所以将id称为Statement的id
        resultType:指定sql输出结果的所映射的Java对象类型,select指定的resultType表示将单条记录映射成的Java对象
    -->
    <!-- 查询用户总数 -->
 	<select id="count" resultType="int">
 		select count(1) as count from smbms_user
 	</select>
</mapper>

9、创建测试类(JUnit Test单元测试)

实现思路:

1.定义mybatis配置文件名字的变量

String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource);

2.创建会话工厂

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.通过工厂得到SqlSession

SqlSession sqlSession = sqlSessionFactory.openSession();

4. 通过SqlSession操作数据库

//第一个参数:映射文件中的statement的id,等于namespace+"."+statement的id

//第二个参数:指定和映射文件中所匹配的所有parameterType的类型

//sqlSession.selectOne()的结果是映射文件中所匹配的resultType类型的对象 User user =

sqlSession.selectOne("test.findUserById",1);

System.out.println(user); /

/释放资源

sqlSession.close();

 

示例:

package com.yuntu.test;
import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.io.InputStream;
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 org.apache.log4j.Logger;
import org.junit.jupiter.api.Test;

class UserMapperTest {
	private Logger logger = Logger.getLogger(UserMapperTest.class);
	@Test
	void test() {
        //mybatis配置文件
		String resource="mybatis-config.xml";
		SqlSession sqlSession = null;
		int count=0;//用来接收结果
		try {
			//1.根据 Resources(mybatis配置文件名) 获取 mybatis-config.xml 的输入流
			InputStream is = Resources.getResourceAsStream(resource);
			//2.创建核心对象 SqlSessionFactory 对象,来完成配置文件的读取
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
			//3.创建SqlSession对象
			sqlSession=factory.openSession();
			//4.调用mapper文件对数据进行操作 ps:检查mapper是否在mybatis-config.xml中进行配置
			count = sqlSession.selectOne("com.yuntu.dao.user.UserMapper.count");
			logger.debug("当前系统一共有"+count+"用户");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值