发布于2021-03-13 13:48 阅读(1260) 评论(0) 点赞(26) 收藏(4)
什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
mybatis简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。传统的 JDBC代码通常存在如下问题:
1.频繁对数据库进行连接和关闭,造成资源浪费,性能下降。
2.SQL代码、preparedStatement参数、占位符号等硬编码到代码中,不方便维护。
3.遍历结果集数据时,硬编码解析表字段成java属性,不方便维护。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
mybatis框架简要原理
mybatis的核心类与会话流程如下:
Configuration:读取mybatis配置文件(SqlMapConfig.xml、mapper.xml等)->
SqlSessionFactory:根据配置文件创建会话工厂->
SqlSession:API接口,表示和数据库交互时的会话,定义增删改查->
Executor:MyBatis 核心执行器,负责SQL语句的生成->
MappedStatement:负责输入输出的封装。
Mybatis架构图:
代码实例:
编写实体类
package cn.yyj.entity;
public class UserInfo {
private int id;
private String username;
private String password;
private String realname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public UserInfo(int id, String username, String password, String realname) {
this.id = id;
this.username = username;
this.password = password;
this.realname = realname;
}
public UserInfo() {
}
}
mapper类:
package cn.yyj.mapper;
import cn.yyj.entity.UserInfo;
import java.util.List;
public interface UserInfoMapper {
public List<UserInfo> findUserAll();
}
mapper.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">
<!--头部约束-->
<!--接口通过路径找到与之对应的xml-->
<!--绑定接口 -->
<mapper namespace="cn.yyj.mapper.UserInfoMapper">
<!--id就是 接口 方法名 —— 结果的类型 就是UserInfo用户 -->
<select id="findUserAll" resultType="cn.yyj.entity.UserInfo">
SELECT * FROM userinfo
</select>
</mapper>
工具类:
package cn.yyj.util;
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;
public class MybatisUtil {
//加载mybatis配置文件
//创建sqlsessionfactory对象
//创建sqlsession连接对象
//创建关闭sqlsession连接对象
private static SqlSessionFactory sessionFactory;
static{
String resource="mybatis.xml";
try {
InputStream is=Resources.getResourceAsStream(resource);
sessionFactory=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession getSession(){
return sessionFactory.openSession();
}
public static void closeSession(SqlSession session){
if(session!=null){
session.close();
}
}
}
mybatis.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="aa">
<!-- 连接环境信息,取一个任意唯一的名字 -->
<environment id="aa">
<!-- mybatis使用jdbc事务管理方式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- mybatis使用连接池方式来获取连接 -->
<dataSource type="POOLED">
<!-- 配置与数据库交互的4个必要属性 -->
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/shiyan"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--配置接口所对应的xml文件-->
<!-- 加载映射文件-->
<mappers>
<mapper resource="cn/yyj/mapper/UserInfoMapper.xml"></mapper>
</mappers>
</configuration>
测试类:
package cn.yyj.test;
import cn.yyj.entity.UserInfo;
import cn.yyj.mapper.UserInfoMapper;
import cn.yyj.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
//通过MybatisUtil getSession获得连接
SqlSession session = MybatisUtil.getSession();
List<UserInfo> list = session.getMapper(UserInfoMapper.class).findUserAll();
for (UserInfo u : list) {
System.out.println(u.getUsername());
}
}
}
结果展示:
作者:zhqu4399
链接:http://www.javaheidong.com/blog/article/114350/144b32ea2e3feef88e24/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!