Mybatis框架基本使用

Posted Recently 祝祝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis框架基本使用相关的知识,希望对你有一定的参考价值。

Mybatis框架基本使用

操作

1.引入dtd文件 -> 编写xml文件

myTool\\dtd\\mybatis-3-config.dtd
myTool\\dtd\\mybatis-3-mapper.dtd

2.导入依赖项(jar包)

mybatis-3.5.2.jar
mysql-connector-java-5.1.46.jar

3.配置文件

mybatis.cfg.xml	-> 核心配置 <- mybatis-3-config.dtd
	连接池
	注册映射
	
Mapper映射 -> 业务操作 <- mybatis-3-mapper.dtd
	接口		namespace="com.uplooking.dao.DeptDO"
	实体类		resultType="com.uplooking.pojo.DeptVO"
	业务方法
				<select id="find" resultType="com.uplooking.pojo.DeptVO">
					SELECT deptno,dname,loc FROM dept LIMIT #{start},#{limit}
				</select>

4.API操作

sqlSession = MyBatisUtils.getSqlSession();
DeptDO deptDO = sqlSession.getMapper(DeptDO.class);

概念

1.核心类

SqlSessionFactoryBuilder	-> 类		局部变量

SqlSessionFactory			-> 接口		单例模式
	DefaultSqlSessionFactory

SqlSession					-> 接口		会话独立**,具有回滚提交的功能,在插入元素的时候使用**
	DefaultSqlSession

代码演示:

<?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"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mytest"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
	<mapper resource="mappers/DeptDO.xml"/>
	<mapper resource="mappers/EmpDO.xml"/>
	</mappers>
</configuration>


2.ORM -> 对象关系映射

表		列
	public class DeptVO {}
实体类	字段	
	@Param("id")int id
OGNL	#{键}

代码演示:

<?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.uplooking.dao.DeptDO">
 	<select id="findById" resultType="com.uplooking.pojo.DeptVO">
 	SELECT deptno,dname,loc FROM dept WHERE deptno= #{id}
 	</select >
 	<select id="find" resultType="com.uplooking.pojo.DeptVO">
 	SELECT deptno,dname,loc FROM dept LIMIT #{start},#{end}
 	</select>
 	<insert id="insert" >
 	INSERT INTO dept(deptno,dname,loc) 
 	 VALUEs(#{item.deptno},#{item.dname},#{item.loc})
 	</insert>
 	<insert id="insert1" >
 	insert into dept(deptno,dname,loc) VALUEs(#{deptno},#{dname},#{loc})
 	</insert>
 	<update id="update">
 	UPDATE dept SET dname=#{dname},loc=#{loc} WHERE deptno=#{deptno};
 	</update>
</mapper>


3.业务原理 -> 动态代理

//会话通过动态代理产生代理对象 实现代理接口 
//sqlSession.getMapper(type);
//configuration.getMapper(type, this);
//mapperRegistry.getMapper(type, sqlSession);
//mapperProxyFactory.newInstance(sqlSession);
//Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
//class MapperProxy<T> implements InvocationHandler
DeptDO deptDO = sqlSession.getMapper(DeptDO.class);

代码演示:

package com.uplooking.test;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.uplooking.dao.DeptDO;
import com.uplooking.dao.EmpDO;
import com.uplooking.pojo.EmpVO;
import com.uplooking.utils.MybatisUtils;

public class MyBatisTest {

//	@Test
	public void testDeptDO() {
		SqlSession session = MybatisUtils.getSqlSession();
		DeptDO deptDO = session.getMapper(DeptDO.class);
		int i = 10;
		System.out.println(deptDO.findById(10));
		System.out.println(deptDO.find(0, 2));

	}
	@Test
	public void testEmpDO() {
		SqlSession session = MybatisUtils.getSqlSession();
		EmpDO empDO = session.getMapper(EmpDO.class);
		int i = 10;
		System.out.println(empDO.findByid(10));
//		System.out.println(deptDO.find(0, 2));
		int index=1;
		int size=5;
		int ix= (index-1)*5;
		System.out.println(empDO.find(ix, size));

	}
}

生活要永远清醒,永远温柔,永远知进退,慢慢走,闫拓有风景,背后亦有阳光

以上是关于Mybatis框架基本使用的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis的基本使用

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

MyBatis增删改查(步骤详细,由浅入深,适合初学者,只看这一篇就够了)

框架—Mybatis入门

MyBatis教程之一基本使用入门

SSM框架Mybatis的基本使用