MyBatis学习笔记(一)入门
一、简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、简单例子(快速入门)
1.建立Java Project工程
2.导入数据库驱动包以及MyBatis包
3.建表,首先建立一个mybatis数据库,然后创建一个tbl_employee表
并插入一些数据
4.添加mybatis-config.xml配置文件,这里我先在工程中创建一个folder(右键项目名->new->folder)取名为conf
如图:
然后添加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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="asdasd456789"/>
</dataSource>
</environment>
</environments>
<!-- 需要配置SQL映射文件 -->
<mappers>
<!-- <mapper resource="com/atguigu/mybatis/dao/Employee.xml"/> -->
<!-- <mapper resource="com/atguigu/mybatis/dao/Employee.xml"/> -->
<!-- 指向该路径 -->
<mapper resource="EmployeeMapper.xml"/>
</mappers>
</configuration>
然后在conf文件下创建EmployeeMapper.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">
<!--namespace是命名空间,可以随便取,为什么要有这个是为了以后xml文件过多,可能出现重复文件名,而namespace则可以确定是哪一个xml文件
id:是xml文件的唯一标识(可能有多个相同唯一标识,此时mybatis-config不知道指向那个,而namespace则解决此问题)
resultType:执行sql语句返回什么类型
select:就是sql语句
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
lastName:是数据库字段last_name的别名
#{id}传过来的参数
-->
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectEmployee" resultType="com.atguigu.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
</select>
</mapper>
在src下
package com.atguigu.mybatis.bean;
public class Employee {
private Integer id;
private String lastName;
private String email;
private String gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
}
}
编写测试类
package com.atguigu.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
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.atguigu.mybatis.bean.Employee;
import com.atguigu.mybatis.dao.EmployeeMapper;
public class MyBatisTest {
@Test //测试注解,只需右键test函数名,->run as->JUnit Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession实例,能直接执行已经执行映射的sql语句
SqlSession openSession = sqlSessionFactory.openSession();
try {
Employee employee =
openSession.selectOne("org.mybatis.example.BlogMapper.selectEmployee",1);
//第一个参数之指:是哪个命名空间的唯一id,第二个是传过去的参数
System.out.println(employee);
}
finally {
openSession.close();
}
}
}