1.什么是mybatis?
按照网上的描述:MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录。相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的ORM实现。
2.MyBatis相对于JDBC有什么优点?
- 数据库连接池:减少数据库频繁的开启关闭造成的资源浪费,虽然JDBC中的加载数据库可以使用到DBCP技术。
- SQL配置文件:减少硬编码问题,如加载数据库时将信息写在代码里边,代码里边出现的汉字,这些都是硬编码,写在配置文件中就解决了这个问题,方便维护。
- 动态SQL语句:写在xml配置文件中,不需要写在代码中。
- 映射:resultset对象直接转换为Java对象,不需要自己动手大量构造代码。
3.简单的MyBatis运用查询SQL语句。
3.1导入jar包。
3.2查询数据表的pojo塑写。
数据库中该表的数据记录:
类TB7:
package com..pojo;
public class TB7 {
private String id;
private String username;
private Double money;
private int age;
private String depart;
public TB7(){
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getDepart() {
return depart;
}
public void setDepart(String depart) {
this.depart = depart;
}
@Override
public String toString() {
return "TB7 [id=" + id + ", username=" + username + ", money=" + money + ", age=" + age + ", depart=" + depart
+ "]";
}
}
3.3加载驱动的配置文件,为了获取数据库地址,账户密码,从而Java与数据库进行连接。
<?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/demo"/>
<property name="username" value="root"/>
<property name="password" value="113846"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/TB7Mapper.xml"/>
</mappers>
</configuration>
3.4Mapper包中的类,因为要查询tb7表中的数据,先定义一个接口写一个方法,再创建一个xml文件,映射接口和类TB7。
接口:id查询
package com.mapper;
import com.pojo.TB7;
public interface TB7Mapper {
public TB7 query(String id);
}
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="com.openlab.mapper.TB7Mapper">
<select id="query" resultType="com.openlab.pojo.TB7">
select * from tb7 where id = #{id}
</select>
</mapper>
3.5测试类。
3.5.1加载资源配置文件,获取流。
3.5.2生成SqlSessionFactoryBuilder对象,调用build方法。
3.5.3上边3.5.2调用build生成的对象,再调用openSession()方法,从而获取SqlSession对象。
3.5.4SqlSession对象调用getMapper方法解析TB7Mapper.class文件,从而获取TB7Mapper的对象。
3.5.5调用TB7Mapper对象中的方法,就写了一个id查询方法,所以调用该方法传入要查询的id。
3.5.6将最终查询出来的结果打印出来。
package com.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 com.mapper.TB7Mapper;
import com.pojo.TB7;
public class Test {
public static void main(String[] args) throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sqlSessionFactory.openSession();
TB7Mapper mapper = session.getMapper(TB7Mapper.class);
TB7 tb7 = mapper.query("007");
System.out.println(tb7.toString());
}
}
3.6查询结果呈现。