MyBatis概述
一、MyBatis框架概述
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
MyBatis是一个优秀的持久层框架。它对jdbc几乎所有的数据库操作进行了封装(包括加载驱动、创建connection、创建statement、手动设置参数、结果集检索等繁琐操作),使开发者只需要关注SQL本身。
二、MyBatis框架搭建
1、MyBatis初识搭建开始-资源目录结构
MyBatis的jar包下载地址
MyBatis文件说明
2、MyBatis的环境搭建
(1)创建项目,搭建包结构,先创建一个实体类
package com.university.domain;
public class Users {
private Integer userId;
private String username;
private String password;
private String sex;
private String email;
public Users() {
}
public Users(Integer userId, String username, String password, String sex, String email) {
this.userId = userId;
this.username = username;
this.password = password;
this.sex = sex;
this.email = email;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer 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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Users{" +
"userId=" + userId +
", username='" + username + '\'' +
", password='" + password + '\'' +
", sex='" + sex + '\'' +
", email='" + email + '\'' +
'}';
}
}
(2)导入【mybatis】相关jar包和【SqlServer】驱动包、导入【log4j】相关jar包
注意:导入jar包后需要在idea中构建一下才可以使用
(3)在【src根】下创建【mybatis】主配置文件【mybatis-config.xml】,搭建配置文件结构(模板在使用手册第三页)
(4)创建【mapper包】结构,创建 sql 映射文件【XxxMapper.xml】
注意:前缀对应着表的名字,即有几张表,就有几个xml文件(模板在使用手册第四页)
namespace:命名空间
- 不同的【mapper映射文件】使用【namespace】来做区分
- 不同的【mapper映射文件】所使用的【namespace】的命名不允许出现重复
- 使用【命名空间.sqlId】的形式来找到我们想要执行的sql语句,如:test1. getById1
(5)在【src根】下引入【log4j】属性文件
log4j.properties:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=5
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
3、搭建测试程序
如:测试根据ID查单条
(1)在【mybatis-config.xml】配置【UsersMapper.xml】的路径
(2)在【UsersMapper.xml】下写对应的【sql语句】
(3)写测试程序(模板在使用手册第二页)
package com.university.test;
import com.university.domain.Users;
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 java.io.IOException;
import java.io.InputStream;
public class Test01 {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
//输入流
InputStream inputStream = null;
try {
//通过加载MyBatis的主配置文件mybatis-config.xml,创建输入流对象
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
/*
SqlSessionFactoryBuilder:SqlSessionFactory的建造者,通过该建造者对象
调用建造方法,为我们创建一个SqlSessionFactory对象。
sqlSessionFactory对象唯一的作用就是为我们创建SqlSession对象
*/
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//以后所有的操作,使用的都是SqlSession对象,例如增删改查,处理事务等
SqlSession session = sqlSessionFactory.openSession();
/*
需求:根据id查单条
如果取得的是单条记录,我们调用selectOne方法
参数1:根据命名空间. sqlId的形式找到我们需要使用的sql语句
参数2:我们要为sql语句中传递的参数
*/
Users u = session.selectOne("test1.getById",6);
System.out.println(u);
session.close();
}
}