MyBatis(1)

1.MyBatis的入门

1.1MyBatis简介

MyBatis实际是由Ibatis发展而来的,Ibatis1.x和Ibatis2.x统称为:Ibatis。在Ibatis3.x版本Ibatis就成了MyBatis!MyBatis位于软件三层架构中的Dao层,主要是和数据库打交道。
在这里插入图片描述MyBatis的官网:https://github.com/mybatis/mybatis-3
MyBatis下载:在这里插入图片描述

1.2MyBatis的优势【面试】

1.MyBatis是一个框架,除了可以对数据表完成增删改查之外,还有缓存、字段映射等机制。
2.MyBatis支持动态SQL[根据不同参数,拼接成不同的SQL语句]
3.MyBatis支持Java代码和SQL语句分离。
4.MyBatis可以直接将表的关联关系映射为POJO对象的关联关系
5.MyBatis是一个半自动化的ORM框架

1.3MyBatis的第一个案例【参考官方文档】

1.导入jar:mybatis、mysql在这里插入图片描述2.创建mybatis的全局配置文件,并配置它

<configuration>
    <!-- 用来配置数据库连接信息 -->
	<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/xiaomi" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	<!-- 用来加载SQL映射文件 -->
	<mappers>
		<mapper resource="abc.xml" />
	</mappers>
</configuration>

3.创建mybatis的SQL映射文件,并配置它

 <mapper namespace="org.mybatis.example.BlogMapper">

	<select id="selectBlog" resultType="com.offcn.bean.Product">
		select pid,pname,color,price,description from product where pid = #{pid}
	</select>
	
</mapper>

4.写测试代码
4.1根据mybatis的全局配置文件生成SqlSessionFactory对象
4.2通过SqlSessionFactory对象的openSession方法得到SqlSession
4.3通过SqlSession对象给数据库发送SQL语句
4.4关闭SqlSession连接

public void testMyBatis() throws IOException {
		//1.根据mybatis的全局配置文件生成SqlSessionFactory对象
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
	    //2.通过SqlSessionFactory对象的openSession方法得到SqlSession对象
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3.通过sqlSession对象给数据库发送SQL语句
		Object selectOne = sqlSession.selectOne("org.mybatis.example.BlogMapper.selectBlog", 10);
		System.out.println(selectOne);
		//4.关闭SqlSession对象
		sqlSession.close();	
	}

2.MyBatis的全局配置文件

在这里插入图片描述注意:MyBatis全局配置文件中的这些标签是有顺序的。

2.1Properties

作用:properties是用来加载properties配置文件的
案例:

  <!-- properties是用来加载properties配置文件的 
        属性:resource:用来加载src目录下的properties配置文件的
        url:用来加载本地磁盘或者网络url的某个properties配置文件 -->
  <properties resource="db.properties">
    <property name="username" value="root"/>
  </properties>
  <!-- 用来配置数据库连接信息 -->
  <environments default="development">
	<environment id="development">
		<transactionManager type="JDBC" />
		
		<dataSource type="POOLED">
			<property name="driver" value="${jdbc.driverClassName}" />
			<property name="url" value="${jdbc.url}" />
			<property name="username" value="${jdbc.username}" />
			<property name="password" value="${jdbc.password}" />
		</dataSource>
	</environment>
  </environments>

2.2Settings

<!-- setttings标签里面有多个setting标签,每一个setting标签都对应mybatis一个重要设置项 -->
   <settings>
      <!-- 开启数据表的以下划线分割的字段名转为pojo对象的驼峰式命名的属性名 -->
      <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>

2.3typeAliases:类型别名处理器

作用:为类起别名

   <!-- typeAliases里面有多个typeAlias标签,每一个typeAlias标签都对应一个类的别名
         typeAlias:
           type属性:表示为哪个类起别名,别名默认是简类名,而且别名不区分大小写 
           alias属性:自己指定别名
   -->
   <typeAliases>
      <typeAlias type="com.offcn.bean.Product" alias="a"/>
      <!-- 给某个包下的类批量起别名,别名默认是简类名,不区分大小写,当然如果想为这个包下某个类单独指定别名,可以使用alias注解指定 -->
      <package name="com.offcn.bean"/>
   </typeAliases>

补充:MyBatis自带了一些类型别名
在这里插入图片描述

2.4typeHandlers

mybatis自带了类型处理器,负责将java中的类型转换为数据库的类型
在这里插入图片描述

2.5environments

   <!-- 
      environments标签内部可以有多个environment标签,每一个environment标签都对应一种环境
	        开发环境:
	        测试环境:
	        线上环境:
	  每一个environment标签内部又分了     transactionManager标签和 dataSource标签:
	    transactionManager标签:配置事务管理器
	      type: JDBC|MANAGED
	            JDBC: 支持事务
	            MANAGED:不支持事务
	    dataSource标签:
	      type: UNPOOLED|POOLED|JNDI
	            UNPOOLED:不支持数据库连接池
	            POOLED:支持数据库连接池
	            JNDI:过时了            
   -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>

2.6databaseIdProvider

作用:是为数据库厂商起别名。
Mybatis是支持多种数据库的,支持Oracle、mysql、SqlServer、Db2等近10种数据库。
分页:mysql和oracle分页语句是不一样的!

SQL映射文件:

<select id="selectBlog" resultType="com.offcn.bean.Product" databaseId="oracle">
		select pid,p_name,color,price,description from product where pid = #{pid}
</select>

2.7mappers

作用:用来加载sql映射文件或者加载Mapper接口

 	<!-- 用来加载SQL映射文件
	       mappers标签内部可以有多个mapper标签,每一个mapper标签都可以加载一个sql映射文件或者一个mapper接口
	       mapper标签:
	         resource:默认是加载src目录下的sql映射文件,和接口没关系
	         url:默认是加载本地磁盘或者网络url上的映射文件
	         class:加载一个mapper接口,要求 
	                 1. 接口和sql映射文件必须在同一个包下
	                 2.接口和sql映射文件名必须一致
	                 3.sql映射文件的namespace值和mapper接口的全类名保持一致
	                 4.sql映射文件中某个sql语句标签的id值和mapper接口的某个方法名保持一致
	   -->
	<mappers>
	     <!-- 批量加载某个包下的接口 -->
	    <package name="com.offcn.dao"/>
		<!-- <mapper class="com.offcn.dao.ProductMapper" /> -->
	</mappers>

2.8补充:基于注解的增删改查

@Select("select pid,p_name,color,price,description from product where pid = #{pid}")
public Product getProdutcById(Integer pid);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值