mybatisDay01基本使用

前言:mybatis和hibernate的使用基本类似,不同之处在于mybatis需要自己手写sql语句,同时在hibernate和mybatis的配置中都有映射文件和配置文件,在hibernate中映射文件一般称为xxx.hbm.xml,配置文件名为hibernate.cfg.xml,而在mybatis中映射文件名一般为xxxMapper.xml,配置文件为configuration.xml
在hibernate的映射文件中,是表和实体类之间的映射关系,例如

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<!-- hibernate映射文件配置 -->
<hibernate-mapping>
	<!-- 
		class标签	配置映射关系 
		name属性		配置实体类
		table属性	配置表名
	-->
	<class name="com.web.bean.Dept" table="dept">
		<!--  
			id标签		配置主键
			name属性		类中的属性
			column属性	表中的字段
		-->
		<id name="deptno" column="deptno">
			<!--  
				generator标签	配置主键生成策略
				class属性		生成方式assigned(手工生成)
			-->
			<generator class="assigned"></generator>
		</id>
		<!--  
			property标签		配置非主键字段
			name属性			类中的属性
			column属性		表中的字段
		-->
		<property name="dname" column="dname"></property>
		<property name="loc" column="loc"></property>
	</class>
</hibernate-mapping>

而在mabits中映射文件配置的是实体类和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属性	命名空间
-->
<mapper namespace="test">
	<!--  
		insert标签	新增
		id属性		方法名称
		parameterType属性	参数数据类型
		#{} 表示占位符   类似预编译中的?
		#{deptno}	从我实体类中取出属性名称的值放入占位符中
	-->
	<insert id="insertDept" parameterType="com.web.bean.Dept">
		insert into dept(deptno,dname,loc) values(#{deptno},#{dname},#{loc})
	</insert>
	<!--  
		update标签	修改
	-->
	<update id="updateDept" parameterType="com.web.bean.Dept">
		update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
	</update>
	<!--  
		delete标签	删除
	-->
	<delete id="deleteDeptById" parameterType="java.lang.Integer">
		delete from dept where deptno=#{deptno}
	</delete>
	<!--  
		select标签	查询单行数据
		resultType属性	返回值的数据类型
	-->
	<select id="findDeptById" parameterType="java.lang.Integer" resultType="com.web.bean.Dept">
		select deptno,dname,loc from dept where deptno=#{deptno}
	</select>
	
	<!--  
		select标签	查询返回多行
	-->
	<select id="findAllDept" resultType="com.web.bean.Dept">
		select deptno,dname,loc from dept
	</select>
	
	<!--  
		${value}  以字符串拼的方式执行sql
	-->
	<select id="findDeptByDname" parameterType="java.lang.String" resultType="com.web.bean.Dept">
		select deptno,dname,loc from dept where dname like '%${value}%'
	</select>
	
	<!--  
		预编译方式执行模糊查询
	-->
	<select id="findDeptByDname2" parameterType="java.lang.String" resultType="com.web.bean.Dept">
		select deptno,dname,loc from dept where dname like #{dname}
	</select>
	
	
</mapper>

hibernate的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
    <property name="connection.username">scott</property>
    <property name="connection.password">123456</property>
    <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
    <property name="show_sql">true</property>
    <mapping resource="com/web/hbm/city.hbm.xml"/>
    <mapping resource="com/web/hbm/dept.hbm.xml"/>
    <mapping resource="com/web/hbm/emp.hbm.xml"/>
    <mapping resource="com/web/hbm/product.hbm.xml"/>
    <mapping resource="com/web/hbm/user.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

mybatis的配置文件

<?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">
			<!-- 使用jdbc事务管理,目前由mybatis来管理 -->
			<transactionManager type="JDBC"/>
			<!-- 数据库连接池,目前由mybatis来管理 -->
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
				<property name="username" value="scott" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- <mapper>标签用来配置映射文件的,可以有多个 -->
		<mapper resource="com/web/mapper/DeptMapper.xml" />
	</mappers>
</configuration>

hibernate的使用方式,通过session进行数据操作

package com.web.test;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.web.bean.City;
import com.web.bean.Dept;
import com.web.bean.Emp;
import com.web.bean.User;
import com.web.bean.product;

public class test {
	public static void main(String[] args) {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session  =sessionFactory.openSession();
		Transaction transaction  = session.beginTransaction();
        product p  = (product) session.get(product.class, 1);
        User user = (User) session.get(User.class, 1001);
        Set<User> users  = p.getUsers();
        for(User u :users){
        	System.out.println(u);
        }
        Set<product> products  = user.getProducts();
        for(product p1 : products){
        	p1.getUsers();
        }
        }

}

mybatis通过session操作数据

package com.web.test;


import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.web.bean.Dept;

public class Test {

	public static void main(String[] args) {
		
		//获取配置文件流对象
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("configuration.xml");
		//创建Session工厂
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		//打开Session
		SqlSession session = factory.openSession();
		
//		新增
		Dept d = new Dept(90,"教学部","五一路");
		session.insert("test.insertDept",d);
		
		//修改
		//Dept d = new Dept(50,"教务部","芙蓉路");
		//session.update("test.updateDept", d);
		
		//删除
		session.delete("test.deleteDeptById", 50);
		
		//查询单行(对象)
//		Dept d = session.selectOne("test.findDeptById", 10);
//		System.out.println(d);
		
		//查询返回多行(集合)
//		List<Dept> list = session.selectList("test.findAllDept");
//		for(Dept d : list){
//			System.out.println(d);
//		}
		
		//模糊查询(sql拼接)
//		List<Dept> list = session.selectList("test.findDeptByDname", "S");
//		for(Dept d : list){
//			System.out.println(d);
//		}
		
		//模糊查询(预编译)
//		List<Dept> list = session.selectList("test.findDeptByDname2", "%S%");
//		for(Dept d : list){
//			System.out.println(d);
//		}
		
		
		//提交
		session.commit();
		
		//回滚
		//session.rollback();
		//关闭
		session.close();
		
	}
	
}

以上就是hibernate和mybatis的区别和简单使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值