MyBatis框架使用示例
1. 前言
MyBatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. 使用示例
2.1 需要引入的依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>java.jdbc</artifactId>
<version>0.6.1</version>
</dependency>
2.2 目录结构
|-- java
|-- mybatis.dao
|-- mybatis.dao.po
|--mybatis.po.User.java
|-- mybatis.dao.mapper
|-- mybatis.dao.mapper.UserMapper.java
|-- mybatis.dao.HelloWorld.java
|-- resources
|-- mybatis.dao
|-- mybatis.dao.mapping
|--mybatis.dao.mapping.User.xml
|-- mybatis.xml
2.3 具体代码
User.java
package mybatis.dao.po;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class User {
private int id;
private String name;
private String dept;
private String phone;
private String website;
}
UserMapper.java
package mybatis.dao.mapper;
import mybatis.dao.po.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
User getUserById(Integer id);
}
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="mybatis.dao.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="User">
SELECT * FROM `user` WHERE id = #{id}
</select>
</mapper>
MyBatis.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">
<!--配mybatis.xml.xml 是 mybatis 用来建立 sessionFactory-->
<configuration>
<!--设置java类对应的别名,这个别名非常重要,在具体的类的映射中,比如:User.xml 中 resultType 就是对应这个,要保持一致-->
<typeAliases>
<typeAlias alias="User" type="mybatis.dao.po.User"/>
</typeAliases>
<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://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--要映射的xml文件-->
<mappers>
<mapper resource="mapping/User.xml"></mapper>
</mappers>
</configuration>
HelloWorld.java
package mybatis.dao.po;
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.Reader;
public class HelloWorld {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("mybatis.dao.mapper.UserMapper.getUserById", 1);
// UserMapper userMapper = session.getMapper(UserMapper.class);
// User user = userMapper.getUserById(1);
try {
if (user != null) {
System.out.println(user.toString());
}
} finally {
session.close();
}
}
}