在接下来的项目中要使用mybatis,赶紧学习了一下,趁热打铁,小结一下。
一、什么是mybatis
mabatis是一个持久层的框架,是Apache下的一个顶级项目。它让开发者把主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要开发者自己编写)满足需要的sql语句。
mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询的结果集灵活映射成java对象(输出映射)。
二、为什么要使用mybatis
自我感觉是mybatis相对于其他orm框架例如hibernate要更加灵活,相当于半自动化映射,sql优化比较具有优势,在多表关联查询也是比hibernate要易学易懂,更加容易操作。mybatis由于sql可配置,在需求相对多变的项目中,例如互联网项目,就比hibernate要具有优势。
三、如何使用mybatis(配置最简单一个demo)
1、首先,引入jar:
2、创建mybatis的配置文件:SqlMapConfig.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/test?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml" />
</mappers>
</configuration>
3、创建映射文件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="test">
<select id="findUserById" parameterType="int" resultType="com.tgb.mybatis.po.User">
SELECT * from user where userid=#{id}
</select>
</mapper>
4、创建po类User.java:
package com.tgb.mybatis.po;
public class User {
private String userid;
private String userName;
private String password;
private String address;
private String email;
private String tel;
public String getUserid() {
return userid;
}
public void setUserid(String 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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
数据库表:
po类用来映射查询的结果。
5、创建测试类进行测试:
package com.tgb.mybatis.first;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.List;
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.tgb.mybatis.po.User;
public class MybatisFirst {
private SqlSession getSqlSession() throws IOException {
//mybatis配置文件
String resource="SqlMapConfig.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//得到sqlSession
return sqlSessionFactory.openSession();
}
//根据id查询数据
@Test
public void findUserByid() throws IOException {
SqlSession sqlSession=null;
try {
sqlSession=getSqlSession();
//通过sqlsession操作数据库
//第一个参数:映射文件statement的id,=namespace.statement的id
//第二个参数,指定和映射文件所匹配的parameterType类型的参数
User user= sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
sqlSession.close();
}
}
}
6、测试结果,控制台:
在下一篇博客中,将详细介绍mybatis框架,和实际开发如何使用。