Mybatis入门及Demo
简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。 详情可见百度百科
创建Mybatis项目
前期准备
创建数据库和数据表
MyBatis 是一款持久层框架,意味着要与数据库相连,所以你先要将数据库环境搭建好,然后再建一个数据库和数据表。
本次练习使用user表,sql如下:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`address` varchar(255) NOT NULL DEFAULT '',
`phone` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
---
INSERT INTO `user` VALUES ('1', 'mybatis', '北京', '13500000000');
新建Java Project 项目
创建源文件夹config用于存放配置文件,创建lib文件夹存放需要使用的jar包,本次练习中使用了log4j-1.2.17.jar(输出日志),mybatis-3.4.6.jar(mybatis核心包),mysql-connector-java-5.1.30.jar(java和mysql之间的连接包)。
开始构建配置
首先将lib中的jar文件全部Add to Build Path,然后在config文件夹中添加Mybatis的xml配置文件——MybatisConfig.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>
<!-- 给User po类起一个别名 之后可以直接使用别名User 而不是全称 -->
<typeAliases>
<typeAlias alias="User" type="com.mybatis.demo.po.User" />
</typeAliases>
<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://127.0.0.1:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/demo/po/UserMapper.xml" />
</mappers>
</configuration>
在src文件夹中建立包名,然后添加User类
内容如下:
package com.mybatis.demo.po;
public class User {
private int id;
private String name;
private String address;
private String phone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", address=" + address + ", phone=" + phone + "]";
}
}
然后为User添加对应的映射文件——UserMapper.xml,内容如下:
<mapper namespace="com.mybatis.demo.po.UserMapper">
<select id="SelectUserByID" parameterType="int" resultType="User">
select * from `user` where id = #{id}
</select>
</mapper>
最后我们测试一下这个demo是否成功,新建Test类,加载mybaits的配置文件,从而获取SqlSession工厂,然后获取SqlSession,通过ID和参数映射XML和User类,执行查询Sql。
package com.mybatis.demo.test;
import java.io.IOException;
import java.io.Reader;
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 com.mybatis.demo.po.User;
public class Test {
public static void main(String[] args) throws IOException {
Reader reader = Resources.getResourceAsReader("MybatisConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
try {
User user = (User) session.selectOne(
"com.mybatis.demo.po.UserMapper.SelectUserByID", 1);
if(user!=null){
System.out.println(user);
}
} finally {
session.close();
}
}
}
结论
这是一个最简单的mybatis demo,后续的文章会对mybatis应用和源码有着较为深度的使用,若有遗漏或者错误,望君指出。
GitHub地址:https://github.com/lisir123456/MybatisDemo