前言
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。项目中我们经常用到mybatis的动态SQL功能生成复杂的SQL语句。它相对于Hibernate来说更加的轻便小巧,在国内传统公司一般喜欢使用Hibernate,互联网公司会更青睐于Mybatis。虽然mybatis相较于Hibernate来说只是一个半自动化的持久层框架,但是相更加灵活可控; 最重要的一点是,mybatis更加的simple,更贴近SQL,学习成本低于hibernate。
DEMO
介绍Mybatis的简单使用。
/mybatisDemo
-- /src
-- -- /main
-- -- -- /java
-- -- -- -- com/xavier/mybatis
-- -- -- -- -- App.java
-- -- -- -- -- User.java
-- -- -- -- -- UserMapper.java
-- -- -- /resource
-- -- -- -- /mapper
-- -- -- -- -- UserMapper.xml
-- -- -- -- mybatis-config.xml
-- pom.xml
- 项目引入mybatis的依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
- 创建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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true"/>
<property name="username" value="root"/>
<property name="password" value="xxxxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
- 从 XML 中构建 SqlSessionFactory
public class App {
public static void main(String[] args) throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
UserMapper userMapper = sqlSessionFactory.openSession().getMapper(UserMapper.class);
User user = userMapper.selectUser(1);
System.out.println(user);
}
}
- 实体类
@Getter
@Setter
@ToString
public class User {
private Integer id;
private String userName;
private String passWord;
private String realName;
}
- 映射文件以及映射类
public interface UserMapper {
User selectUser(@Param("id") Integer id);
}
<?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="com.xavier.mybatis.UserMapper">
<select id="selectUser" parameterType="int" resultType="com.xavier.mybatis.User">
SELECT * FROM TB_USER WHERE ID = #{id}
</select>
</mapper>
- 运行
- 说明
DEMO的主方法中,从xml构建了 SqlSessionFactory ,通过SQLSessionFactory 打开了一个新的SqlSession,获取Mapper。
最后调用Mapper的selectUser方法,传入参数,获取返回值。