Mybatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,几乎消除了所有JDBC代码和参数的设计及结果集的检索。
什么是持久化?
数据从瞬时状态变为持久状态。持久化过程如写入文件,写入数据库。原来放到缓存中,下次访问就没有了。
什么叫持久层?
完成持久化工作的代码块。也叫dao层。
Mybatis就是帮助程序员将数据存放到数据库中和从数据库取数据。传统的JDBC操作有很多重复的代码块,比如数据取出时的封装,数据库的建立连接等等。使用Mybatis可以减少重复的代码,提高开发效率。
Mybatis是一个半自动化的ORM框架。
为什么是半自动化?
因为Mybatis还要手动写SQL语句,所以不是全自动化。
ORM释义?
Object–Relation–Mapping。
对象关系映射.将对象转化为关系的一个过程。现在的数据库基本都是关系型数据库。
JDBC就是一个Java项目,所以单独演示Mybatis建Java工程既可。
Mybatis第一个Hello案例:
Mybatis的中文文档(准备开始)写的很好。
步骤:
1 . 导入相关的jar包
核心jar包 依赖jar包 和数据库jar包
mybatis3.30下载后有个核心包,lib里是依赖包,
mybatis3.3.1下载后只提供了核心包和核心源码包
2 . 看文档模板写mybatis核心配置文件,一般这种框架核心配置文件放在src下比较好,Spring mvc默认在web-INF下都要修改配置。
<?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"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 匹配映射文件 -->
<mappers>
<mapper resource="cn/sxt/entity/user.mapper.xml"/>
</mappers>
</configuration>
3 . 从xml创建SqlSessionFactory以及获得SqlSession
看文档,最好把这个创建的过程封装
package cn.sxt.util;
import java.io.IOException;
import java.io.Reader;
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 MyBatisUtil {
public static SqlSessionFactory getSqlSessionFactory() throws IOException{
String resource = "mybatis.cfg.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
return sqlMapper;
}
public static SqlSession getSqlSession() throws IOException{
SqlSession session = getSqlSessionFactory().openSession();
return session;
}
}
4 . 创建实体类
package cn.sxt.entity;
public class User {
private int id;
private String name;
private String pwd;
//省略set/get方法
5 .编写sql语句的映射文件
<?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="cn.sxt.entity.UserMapper">
<select id="selectUser" parameterType="int" resultType="cn.sxt.entity.User">
select * from User where id = #{id}
</select>
</mapper>
6 . 测试
public class Test {
public static void main(String[] args) throws IOException {
SqlSession sqlSession=MyBatisUtil.getSqlSession();
//映射文件的namespace加id
User user= sqlSession.selectOne("cn.sxt.entity.UserMapper.selectUser",1);
System.out.println(user.getName());
}
}
调试记载:
1 . 核心配置文件datasource中的driver名称。找到mysql jar包下的jdbc
包下的Driver.class右键copy qualified name获取类全名复制后去掉.class即可
2 . mysql url:
jdbc:mysql://localhost:3306/数据库名
663

被折叠的 条评论
为什么被折叠?



