MyBatis环境搭建以及简单入门(基于XML方式)

一、图析MyBatis框架

MyBatis环境搭建以及简单入门(基于XML方式)_第1张图片
MyBatis环境搭建以及简单入门(基于XML方式)_第2张图片
(1) sqlMapConfig.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂

(2) 基于SqlSessionFactory可以生成SqlSession对象

(3) SqlSession是一个既可以发送SQL去执行,并返回结果,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。

(4) Executor是SqlSession底层的对象,用于执行SQL语句

(5) MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做输出映射(即将SQL查询的结果映射成相应的结果)

2.MyBatis框架构成分析

MyBatis环境搭建以及简单入门(基于XML方式)_第3张图片

步骤一:导入依赖jar包


		
			org.mybatis
			mybatis
			3.2.8
		
		
			mysql
			mysql-connector-java
			5.1.32
		
		
			junit
			junit
			4.10
		
		
			log4j
			log4j
			1.2.17
		
	

其中,前两个是必须的。后两个可有可无。其中,Junit用于单元测试的,Log4j用于打印日志信息。

步骤二: 主配置文件

方式一:

1.在jdbc.properties文件中作如下配置:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/yonghedb?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

2.在SqlMapConfig.xml文件中作如下配置:






	
	
	
	
		
			
			
			
			
			
				
				
				
				
			
		
	
	
		
	

❤️ 注意:resource的路径用的是“/”

方式二:



详细配置如下:


    


	
	
		
		
			
			
			
			
			
				
				
				
				
			
		
	
	
	
	
		
		
	

步骤三:准备映射文件






	
	
	

步骤四:测试环境

package com.tedu;

import java.io.InputStream;
import java.util.List;


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 com.tedu.dao.EmpMapper;
import com.tedu.pojo.Emp;

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

}

MyBatis环境搭建以及简单入门(基于XML方式)_第4张图片

二、几个可以优化的地方

1 、9.1加入log4j日志框架

在项目中加入log4j的配置文件,用于打印日志信息,便于开发调试。
在src(或相似的目录)下创建log4j.properties如下:

# Global logging configuration
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作为输出日志信息。
只要将该文件放在指定的位置,log4j工具会自动到指定位置加载上述文件,读取文件中的配置信息并使用!

2、可重复使用的SQL片段

在编写查询SQL时,我们书写的SQL往往为:

  • select * from emp
  • select * from emp where id=#{id}
其实这里书写星号(* ) 不如直接写列名速度快,因为在查询时,
还需要将星号(*)转换为表列名,如果直接写列名则省去了转换操作。
因此下面在查询指定id的员工和查询所有员工的SQL中,
将查询的列由星号(*)替换为了列名。
 





但,如果直接写列名替换星号(*),可能也会带来一些麻烦:

(1)假设这里还有很多查询,都要查询所有列,每次都书写所有列名,麻烦!

(2)如果表中的列有几十个,书写起来会更加麻烦,SQL语句的长度也会暴增!

(3)如果后期需求发生变化,要修改查询的列,可能要修改多处,可维护性差!
要解决上面的问题,可以使用sql片段,例如:

声明一个sql片段,指定要查询的列

id,name,job,salary

将下面查询SQL中的列名替换为SQL片段







3. SQL语句中的特殊符号

示例:添加一个查询功能:查询薪资小于3500的所有员工。
1、编辑EmpMapper.xml文件, 添加查询对应的sql.



2、但在书写完后,xml文件提示有错误:

原来,小于号(<)在xml文件中是特殊字符,被xml文件当成了标签的开始符号。

3、解决方法:将特殊符号包含在CDATA区()中,这是因为放在CDATA区中的内容,只会被xml解析器当作普通文本来处理。而不是被当成标签的一部分处理。



你可能感兴趣的:(MyBatis环境搭建以及简单入门(基于XML方式))