MyBatis与Hibernate的区别
- MyBaits是半自动的框架 需要自己去写sql语句。 而Hibernate则是全自动的框架,会自动生成需要的sql语句。在一些特殊情况下不需要生成sql语句,比如:银行的系统中普遍使用存储过程,性能要求苛刻的环境中等。
创建一个简单的MyBatis程序
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
- 创建实体映射文件,例如 在数据库中有数据库mybatisdemo 表tb_user(id,name,age,sex),则创建一个相应的pojo和一个映射文件,示例如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
<!--namespace 习惯于用包名加映射文件的名字类命名-->
<mapper namespace="domain.uerMapper">
<!--id:属性是唯一的 不可重复
parameterType:插入时使用的参数类型
useGeneratedKeys:使用数据库的子增长策略-->
<insert id="save" parameterType="domain.User" useGeneratedKeys="true">
insert into tb_user(name,age,sex) values(#{name},#{age},#{sex})
</insert>
</mapper>
<?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>
<settings>
<setting name="logImpl" value="LOG4J"></setting>
</settings>
<!--配置连接的数据库-->
<environments default="mysql">
<environment id="mysql">
<!--制定事务类型 -->
<transactionManager type="JDBC"></transactionManager>
<!--数据源配置-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatisdemo"></property>
<property name="username" value="root"></property>
<property name="password" value="xbx"></property>
</dataSource>
</environment>
</environments>
<!--配置持久类的映射文件的位置-->
<mappers>
<mapper resource="mapper/userMapper.xml"></mapper>
</mappers>
</configuration>
public class MyBatisTest {
public static void main(String[] args) throws IOException {
//设置主配置文件的路径
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
//初始化 获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
//创建SqlSession实例
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setName("test");
user.setAge(22);
user.setSex("男");
int insert = sqlSession.insert("domain.uerMapper.save", user);
System.out.println(insert);
//提交事务
sqlSession.commit();
//关闭session
sqlSession.close();
}
}