Hibernate把JDBC封装的更严实,而MyBatis没有完全封装
所以,Hibernate可以提供全面的数据库封装机制的“全自动”ORM,MyBatis只能提供“半自动”ORM
正是因此,使得MyBatis越来越受到推崇,占据越来越多的市场份额,因为在大数据时代,很多公司需要根据自己公司业务具体情况设计更为高效适合的sql,而Hibernate的完全封装使得其对数据库的操作已经是一个黑盒,不能对其进行优化,而MyBatis这种轻量级的框架则可以满足这种定制化的需求,同时也能提供框架带来的便利。
20.7.8.18:00 添加内容:
Hibernate的sql语句是自动生成的,因此可以适应于各种数据库,数据库环境改变时也不会受到影响,但是Mybatis的sql语句是程序员编写的,只能适配现有的数据库,当数据库环境改变时,会报错》
版本信息: jdk13,eclipse2020-03,
原本是通过看视频的方式学习框架知识,但是发现现有的主流教程基本还是停留在自己在网上找jar包,自己build path的方式,毕竟学过了maven,这么方便的技术还是要用的,并且教程学的jdk和各种jar包版本基本都很旧,各种版本不兼容的问题让人要死要活,所以建议和我有类似的情况的同学,不妨借助网络博客来学习。
1、创建Maven工程
2、配置pom.xml文件,导入mybatis依赖
4.0.0
cn.junstar
mybatis-02
0.0.1-SNAPSHOT
org.mybatis
mybatis
3.1.1
mysql
mysql-connector-java
5.1.10
3、创建javebean类 User类,并创建UserMapper接口,以便对User类的访问
package com.mybatis.dao;
public class User {
private String UserName;
private String UserPwd;
private String UserMail;
private String UserAddress;
public User() {
}
public User(String userName, String userPwd, String userMail, String userAddress) {
UserName = userName;
UserPwd = userPwd;
UserMail = userMail;
UserAddress = userAddress;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPwd() {
return UserPwd;
}
public void setUserPwd(String userPwd) {
UserPwd = userPwd;
}
}
package com.mybatis.dao;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
public void insertUser(User user);
public User selectUser(@Param(value = "userName")String userName);
}
4、在resource目录下创建mybatis配置文件mybatis-config.xml和sql映射配置文件User.xml
注意在
INSERT INTO User
(UserName,UserPwd,UserMail,UserAddress)
VALUES (#{UserName},#{UserPwd},#{UserMail},#{UserAddress})
5、创建配置文件中指定的数据库test
数据库客户端帐号,密码,地址,端口号要与自己的一致
数据库名为test
6、创建测试函数
package com.mybatis.domybatis;
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;
import com.mybatis.dao.User;
import com.mybatis.dao.UserMapper;
public class Domybatis {
public static void main(String[] args) {
SqlSession session = null;
try {
String resource = "mybatis-config.xml";
Reader reader = null;
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
session = sqlSessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User("haha","1111","[email protected]","shanghai");
userMapper.insertUser(user);
session.commit();
user = userMapper.selectUser("haha");
session.commit();
System.out.println(user.toString());
} catch(Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}
}
点击运行,刷新数据库,会发现一条数据被插入,同时控制台会给出一条查询结果结果,警告信息是因为jdk版本过高导致的,可以忽略。