mybatis 和 hibernate的区别
一.声明数据库的配置文件不同
mabatis:
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> <typeAliases> <package name="com.how2java.pojo"/> typeAliases> <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/how2java?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="admin"/> dataSource> environment> environments> <mappers> <mapper resource="com/how2java/pojo/Category.xml"/> <mapper resource="com/how2java/pojo/Product.xml"/> <mapper resource="com/how2java/pojo/Order.xml"/> <mapper resource="com/how2java/pojo/OrderItem.xml"/> mappers> configuration>
hibernate:
xml version=‘1.0‘ encoding=‘utf-8‘?> DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driverproperty> <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8property> <property name="connection.username">rootproperty> <property name="connection.password">adminproperty> <property name="dialect">org.hibernate.dialect.MySQLDialectproperty> <property name="current_session_context_class">threadproperty> <property name="show_sql">trueproperty> <property name="hbm2ddl.auto">updateproperty> <mapping resource="com/how2java/pojo/Product.hbm.xml" /> session-factory> hibernate-configuration>
二. 创建session时方式不同
mybatis:
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; 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.how2java.pojo.Category; import com.how2java.pojo.Order; import com.how2java.pojo.OrderItem; import com.how2java.pojo.Product; /** * * @author luyurong * */ public class TestMybatis { public TestMybatis() { // TODO Auto-generated constructor stub } public static void main(String[] args) throws IOException { String resource="mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 根据配置文件得到SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 根据SqlSessionFactory得到session SqlSession session = sqlSessionFactory.openSession(); // // 插入一个新的catgory // insertCategory(session); // // // 删除id为2的category // deleteCategory(session); // // 查询出所有的category // listAllCategory(session); // // 修改category // updateCategory(session); // 查询指定id的category // getCategory(session); // 列出所有category及其包含的product // listAllCategoryAndProduct(session); // // 列出所有product及其对应的category // listAllProductAndCategory(session); // 列出所有order listOrder(session); session.commit(); session.close(); } /** * 列出所有的category * @param session */ public static void listAllCategory(SqlSession session) { Listcs = session.selectList("listCategory"); for (Category category : cs) { System.out.println(category.getName()); } } /** * 插入一个category * @param session */ public static void insertCategory(SqlSession session) { Category c = new Category(); c.setName("新增的category"); session.insert("addCategory",c); } /** * 删除一个category * @param session */ public static void deleteCategory(SqlSession session) { Category c = new Category(); c.setId(2); session.delete("deleteCategory",c); } /** * 根据id获取一个category * @param session */ public static void getCategory(SqlSession session) { Category c = session.selectOne("getCategory",3); System.out.println(c.getName()); } /** * 更新一个category * @param session */ public static void updateCategory(SqlSession session) { Category c = new Category(); c.setId(3); c.setName("hh"); session.update("updateCategory",c); } /** * 通过id和模糊查询的name列出category * @param session */ public static void listCategoryByIdAndName(SqlSession session) { Map params = new HashMap<>(); params.put("id", 1); params.put("name", "h"); List cs = session.selectList("listCategoryByIdAndName",params); for (Category category : cs) { System.out.println(category.getName()); } } /** * 列出所有的category包括category里的产品 * @param session */ public static void listAllCategoryAndProduct(SqlSession session) { List cs = session.selectList("listCategoryAndProduct"); for (Category category : cs) { System.out.println(category.getName()); System.out.println(category.toString()); List products = category.getProducts(); for (Product product : products) { System.out.println(product); } } } /** * 列出所有的product包括product里的category * @param session */ public static void listAllProductAndCategory(SqlSession session) { List ps = session.selectList("listProductAndCategory"); for (Product product : ps) { System.out.println(product); Category c = product.getCategory(); System.out.println(c); } } public static void listOrder(SqlSession session) { List os=session.selectList("listOrder"); for (Order order : os) { System.out.println(order.getCode()); List orderItems = order.getOrderItems(); Iterator it=orderItems.iterator(); while(it.hasNext()) { OrderItem oi=it.next(); System.out.format("\t%s\t%f\t%d%n", oi.getProduct().getName(),oi.getProduct().getPrice(),oi.getNumber()); } } } }
hibernate:
package com.how2java.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.how2java.pojo.Product; public class TestHibernate { public static void main(String[] args) { // 获取SessionFactory SessionFactory sf = new Configuration().configure().buildSessionFactory(); // 通过SessionFactory获取Session Session s = sf.openSession(); // 在Session的基础上开启一个事务 s.beginTransaction(); // 通过调用Session的save方法把对象保存到数据库 Product p = new Product(); p.setName("iphone7"); p.setPrice(7000.0f); s.save(p); // 提交事务 s.getTransaction().commit(); // 关闭session s.close(); // 关闭SessionFactory sf.close(); } }
三.每个类对象的xml文件格式不同
mybatis:
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="com.how2java.pojo"> <resultMap type="product" id="productBean"> <id column="pid" property="id"/> <result column="pname" property="name"/> <result column="price" property="price"/> <association property="category" javaType="category"> <id column="cid" property="id"/> <result column="cname" property="name"/> association> resultMap> <select id="listProductAndCategory" resultMap="productBean"> select p.*,c.*,p.id ‘pid‘,c.id ‘cid‘,p.name ‘pname‘,c.name ‘cname‘ from category_ c right join product_ p on c.id=p.cid select> <select id="getProductAndCategory" resultMap="productBean"> select p.*,c.*,p.id ‘pid‘,c.id ‘cid‘,p.name ‘pname‘,c.name ‘cname‘ from category_ c right join product_ p on c.id=p.cid where p.id=#{id} select> <select id="listProduct" resultType="product"> select * from product_ <where> <if test="name!=null"> and name like concat(‘%‘,#{name},‘%‘) if> <if test="price!=null and price!=0"> and price>#{price} if> where> select> mapper>
hibernate:
xml version="1.0"?> DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.how2java.pojo"> <class name="Product" table="product_"> <id name="id" column="id"> <generator class="native">generator> id> <property name="name"/> <property name="price"/> class> hibernate-mapping>
原文:https://www.cnblogs.com/yumengshi/p/14998459.html