MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
具有以下优点:(1)开源的优秀持久层框架;(2)SQL语句与代码分离;(3)面向配置的编程;(4)良好支持复杂数据映射;(5)动态SQL
无论是Hibernate或者Mybatis,都可以法相他们有共同点:(1)从配置文件(通常是XML配置文件中)得到sessionfactory;(2)由sessionfactory产生 session;(3)在session中完成对数据的增删改查和事务提交等;(4)在用完之后关闭session;
具体言:每个MyBatis应用程序主要都是使用SqlSessionFactory实例,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
在java对象和数据库之间有做mapping的配置文件,也通常是xml文件
各种技术在MVC中的位置如下图:
下面贴出源代码:
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>
<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://localhost:3306/student"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--配置映射 -->
<mappers>
<mapper resource="com/hanchun/map/student.xml"/>
</mappers>
</configuration>
Student.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="/">
<select id="findById" parameterType="int" resultType="com.hanchun.pojo.Student">
select * from management where id=#{id}
</select>
</mapper>
Student.java
package com.hanchun.pojo;
/**
*Student注意和数据库对应的表写成一一对应,否则会返回null值
*/
public class Student {
private int id;
private String stu_name;
private String stu_age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getStu_age() {
return stu_age;
}
public void setStu_age(String stu_age) {
this.stu_age = stu_age;
}
}
Test.java
package com.hanchun.test;
import java.io.IOException;
import java.io.Reader;
import com.hanchun.pojo.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test{
public static void main(String[] args) {
// 注意写成路径的形式
String resource = "com/hanchun/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
Student temp = session.selectOne("findById", 3);
System.out.println(temp.getStu_name());
session.close();
}
}
最后程序运行结果:
欢迎讨论:http://blog.youkuaiyun.com/code_7