MyBatis学习笔记(一)

一、hello world

1、下载mybatis项目

2、创建java项目(不是Java web),添加lib目录,将mybatis.jar 、mysql-connect-java.jar、log4j.jar复制到lib文件夹下(log4j需要一个名为log4j.xml的配置文件),build-path。

3、在数据库中准备一个测试用的表,往里面放置几条简单数据。

4、在项目中创建对应的java bean类,添加getter、setter方法。

5、创建名为config的source目录,用于存放xml配置文件,第一步中的log4j.xml也放置到此目录中。

6、在config中创建名为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>

	<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/jumpandjump" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>

	<!-- sql映射文件注册到全局配置文件中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

【注】需要修改的第一个是数据源信息,第二个就是sql映射文件的位置。

7、创建名为EmployeeMapper.xml的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="org.mybatis.example.EmployeeMapper"> 
  <select id="selectEmp" resultType="com.qut.mybatis.bean.Employee">
    select * from tbl_employee where id = #{id}
  </select>
</mapper>

【注】 namespace:名称随意,用于区分不同namespace下的id,防止冲突。

            id:映射sql的唯一标识

            #{id}:从传递过来的参数取出id 

 

8、创建JUnit test case,编写代码如下:

class MyBatisTest {

	/*
	 * 根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
	 **/
	@Test
	void test() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//获取sqlSession实例,能执行已经映射的sql语句
		//
		SqlSession session = sqlSessionFactory.openSession();
		try {
		
		  Employee employ = session.selectOne("org.mybatis.example.EmployeeMapper.selectEmp", 1);		  
		} finally {
		  session.close();
		}
	}

}

【注】mybatis根据全局配置文件即mybatis-config.xml文件创建sqlSessionFactory对象 (也可以不通过全局配置文件),sqlSessionFactory对象可以获取sqlSession实例,sqlSession实例可以执行已经映射的sql语句,也就是在全局配置文件里注册的sql配置文件里面的sql语句。selectOne方法可以查询一条记录,参数分别是映射sql的id以及参数。

完成以上步骤,我们就使用mybatis从数据库中查询出了一条数据。

 

二、接口式编程

1、创建接口,声明一个获取数据的方法

import com.qut.mybatis.bean.Employee;

public interface EmployeeMapper {

	public Employee getEmpId(Integer id);
}

2、将EmployeeMapper.xml的sql映射文件绑定给这个接口

修改namespace对应这个接口的全类名,而id可以为接口中的方法名

<?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.qut.mybatis.dao.EmployeeMapper">
  <select id="getEmpId" resultType="com.qut.mybatis.bean.Employee">
    select * from tbl_employee where id = #{id}
  </select>
</mapper>

3、测试。注意这个代码中第三步获取了接口的实现类,而我们在代码中声明的接口并没有实现类,这是mybatis通过代理生成的对象。

@Test
	public void test01() throws IOException {
		//1、获取sqlSessionFactory对象
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//2、获取sqlSession实例
		SqlSession session = sqlSessionFactory.openSession();
		//3、获取接口的实现类对象
		try {
			EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
			 Employee employ = mapper.getEmpId(1);	 
			
		} finally {
		  session.close();
		}
		
	}

 

三、全局配置文件

1、引入全局配置的DTD约束文件(eclipse环境下)本地方法:

1)获取dtd文件,将mybatis.jar解压⁨,在org⁩ ▸ ⁨apache⁩ ▸ ⁨ibatis⁩ ▸ ⁨builder⁩ ▸ ⁨xml⁩ 路径下可以找到mybatis-3-config.dtd文件,将其拷贝出来

2)eclipse - Preferences - XML - XML_Catalog - Add...

3)key属性填写dtd文件顶部的http地址 - http://mybatis.org/dtd/mybatis-3-config.dtd,Location填写 dtd文件目录,重新打开xml文件

 

2、<properties>

该标签用于引用外部的properties配置文件,一般数据源使用这个,可选参数有resource、url

resource:用于引用类路径下的配置文件(使用 . 符号)

url:用于引用磁盘路径或者网络路径下的配置文件(使用 / 符号)

<properties resource = "dbconfig.properties"></properties>

 

3、<settings>

setting用来设置每一个设置项,后续会做详细学习

 

4、<typeAliases>

别名处理器,可以为java类型起别名,别名不区分大小写。

typeAlias,属性type 全类名,默认的别名是类名小写,可以通过alias指定新的名字

 <typeAliases>

       <typeAlias type="com.qut.mybatis.bean.Employee"/>

</typeAliases>

使用package批量为类型起别名

 <typeAliases><package name ="com.qut.mybatis.bean"/></typeAliases>

可以使用注解@Alies起别名

 

5、<typeHandlers>

类型处理器,架起java类型以及数据库类型一一对应,后续会深入学习

 

6、<plugins>

拦截sql执行的关键步骤 动态代理

Executor执行器、ParameterHandler参数处理器、ResultSetHandler结果集处理器、StatementHandler SQl语句处理器,后续会深入学习

 

7、<environments>

    environments能配置多种环境

    单独的environment必须配置transactionManager和dataSource属性;id代表当前环境唯一标识,可以使用environments的default指定切换环境。

    transactionManager事务管理器,属性type 事务管理器的类型,参数有 JDBC | MANAGED(别名)

    dataSource-数据源,属性type,可选参数有UNPOOLED | POOLED | JNDI

 

8、<databaseIdProvider>

支持多数据库厂商 type="DB_VENDOR"别名 VendorDatabaseIdProvider,得到数据库厂商标识(驱动)

<databaseIdProvider type="DB_VENDOR">

<!-- 为不同数据库厂商起别名 -->

<property name="MySQL" value="mysql"/>

</databaseIdProvider>

 

9、<mappers>

mappers标签: 将sql映射注册到全局配置中

resource:类路径下的sql文件

url:网络路径或者磁盘路经下的sql文件

 

class:引用(注册)接口,接口全类名

1)sql映射文件 名与接口同名,并且放在与接口同一目录下

2)没有sql映射文件,sql都是利用注解写在接口上

推荐比较重要的dao接口写在xml配置文件里

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值