另一个ORM——MyBatis(一)

           在接下来的项目中要使用mybatis,赶紧学习了一下,趁热打铁,小结一下。

一、什么是mybatis

mabatis是一个持久层的框架,是Apache下的一个顶级项目。它让开发者把主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要开发者自己编写)满足需要的sql语句。

mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询的结果集灵活映射成java对象(输出映射)。

二、为什么要使用mybatis

自我感觉是mybatis相对于其他orm框架例如hibernate要更加灵活,相当于半自动化映射,sql优化比较具有优势,在多表关联查询也是比hibernate要易学易懂,更加容易操作。mybatis由于sql可配置,在需求相对多变的项目中,例如互联网项目,就比hibernate要具有优势。

三、如何使用mybatis(配置最简单一个demo)

1、首先,引入jar:


2、创建mybatis的配置文件:SqlMapConfig.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/test?characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
			
		</environment>
		
	</environments>
	<!-- 加载映射文件 -->
	<mappers>
		<mapper resource="sqlmap/User.xml" />
	</mappers>
</configuration>

3、创建映射文件User.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">
<mapper namespace="test">
	
	<select id="findUserById" parameterType="int" resultType="com.tgb.mybatis.po.User">
		SELECT * from user where userid=#{id}
	</select>
</mapper>
4、创建po类User.java:

package com.tgb.mybatis.po;

public class User {
	
	private String userid;
	private String userName;
	private String password;
	private String address;
	private String email;
	private String tel;
	
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	
}
数据库表:



po类用来映射查询的结果。

5、创建测试类进行测试:

package com.tgb.mybatis.first;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
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 org.junit.Test;

import com.tgb.mybatis.po.User;

public class MybatisFirst {

	private SqlSession getSqlSession() throws IOException {
		
		//mybatis配置文件
		String resource="SqlMapConfig.xml";
		  InputStream inputStream= Resources.getResourceAsStream(resource);
		//创建会话工厂
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		//得到sqlSession
		return sqlSessionFactory.openSession();
	}
	//根据id查询数据
	@Test
	public void findUserByid() throws IOException {
		SqlSession sqlSession=null;
		try {
			sqlSession=getSqlSession();
			//通过sqlsession操作数据库
			//第一个参数:映射文件statement的id,=namespace.statement的id
			//第二个参数,指定和映射文件所匹配的parameterType类型的参数
			User user= sqlSession.selectOne("test.findUserById", 1);
			
			System.out.println(user);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//释放资源
			sqlSession.close();
		}
	}
	
	
}

6、测试结果,控制台:



在下一篇博客中,将详细介绍mybatis框架,和实际开发如何使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值