第一章初始mybatis框架

ORM:

ORM(Object/Relational Mapping),即对象/关系映射.ORM是一类框架的总称,这类框架完成了对象数据到关系型数据的映射.使开发人员能够以面向对象的思想,操作数据库.

常见的ORM框架:

1 .MyBatis,
2. Hibernate,
3. 3.TopLink...

----认识MyBatis:

一。概念:
MyBatis是一种基于Java的持久层框架,支持定制化SQL,存储过程以及高级映射的持久层框架.最初是apache的开源项目–iBatis,2010年由apache迁移到google,并改名为MyBatis.在2013年11月由google迁移到GitHub

二。特点:
1.MyBatis是一个轻量级ORM框架,只需mybatis-*.jar和数据库驱动器即可运行.
2.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
3.将SQL代码与程序代码分离,利于SQL重用和修改
4.MyBatis不会对应用程序或数据库的设计强加任何影响,提高应用的灵活性

三。mybatis官网 [可以查看mybatis框架的帮助文档]:
https://mybatis.org/mybatis-3/zh/index.html

四。mybatis下载框架:
https://github.com/mybatis/mybatis-3/releases

----开发步骤:

第1步: 添加jar包

  1. mybatis-3.5.1.jar
  2. mysql-connector-java-5.1.22-bin.jar

第2步: 编写配置文件
注意: 配置文件名称和位置不限,但是通常称为mybatis-config.xml,存入到src下

<?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">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="驱动器入口类的全名称"/>
            <property name="url" value="url地址信息"/>
            <property name="username" value="账户"/>
            <property name="password" value="密码"/>
        </dataSource>
    </environment>
</environments>
<!--添加映射文件-->
<mappers>
    <mapper resource="包名1/包名2/.../文件名.xml"/>
</mappers>
</configuration>

第3步: 编写映射文件

<?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">
<!--在当前XML中编写针对User的CURD操作命令-->
<mapper namespace="命名空间[类似包的作用]">
<select/insert/update/delete id="业务标记名" resultType="实体类全名"      parameterType="占位符类型">
    SQL命令
</select/insert/update/delete>
</mapper>

备注: 映射文件用于实现 实体对象与数据表字段的映射关系

第4步: 编写启动程序

  //获得MyBatis的配置文件: 数据库信息,映射文件信息[SQL]
InputStream is=Resources.getResourceAsStream(配置文件位置/配置文件名.xml");//参数 为配置文件的位置: a/mybatis-config.xml
//基于配置信息创建SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
//获得SqlSession: 连接数据库
SqlSession session=factory.openSession();

//数据库操作: CURD
session.CURD方法名("命名空间.业务标识名");//映射文件中的命名空间和业务标识名
//执行映射文件中的哪个SQL

//提交事务
session.commit();
//关闭连接
session.close();

----认识配置文件:

介绍
MyBatis的配置文件中包含了影响MyBatis行为和属性的信息,控制MyBatis的整体运行方式.配置文件中主要配置数据源[驱动类,URL,账号,密码],事务管理,加载指定映射文件.
说明:
1.MyBatis配置文件的名称和位置自定义.
2.MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
3.MyBatis配置文件顶层结构如下:
基本格式:

-----配置标签:

<environments>
作用: 
声明一组运行环境.[支持多数据库]
属性:
default: 设置默认运行环境,属性值为某个<environment>的id值.

<environment>
作用: 
定义1个运行环境
属性: 
id: 设置当前环境的匿称,名称任意.通常为development和work.

<transactionManager>:
作用: 
指定事务管理器,MyBatis含有2种事务管理器[JDBC和MANAGED]
属性:
type: JDBC[使用JDBC的提交和回滚设置],MANAGED[使用其他容器管理事务提交和回滚]

<dataSource>:
作用:
该标签通过标准的JDBC数据源接口来配置JDBC连接对象的资源
属性:
	type: 设置数据源的类型,属性值为POOLED|UNPOOLED|JNDI
	POOLED:使用连接池.从连接池中取出连接,关闭时将该连接放回连接池
	UNPOOLED: 不使用连接池.每次都打开新连接,关闭时将彻底关闭该连接
	JNDI: 从其他容器中获得连接
	
<property>:
作用:
定义数据源的指定属性和值
属性:
name: 属性名.在<dataSource>中,name通常为driver/url/username/password或其他
value: 属性值.

|-----配置数据源:
方式1: 直接在property中写明参数值

<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>

方式2:

<!--配置环境-->
<properties>
    <property name="mydriver" value="com.mysql.jdbc.Driver"/>
    <property name="myurl" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="myusername" value="root"/>
    <property name="mypassword" value="123456"/>
</properties>
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/><!--配置事务管理的方式: JDBC,MANAGED-->
        <!--配置数据源: 账户/密码  URL  驱动器  连接数据库 -->
        <dataSource type="POOLED"><!--type定义数据连接方式: POOLED[使用连接池]|UNPOOLED|JNDI-->
            <property name="driver" value="${mydriver}"/><!--Class.forName("com.mysql.jdbc.Driver")-->
            <property name="url" value="${myurl}"/>
            <property name="username" value="${myusername}"/>
            <property name="password" value="${mypassword}"/>
        </dataSource>
    </environment>
</environments>

方式3:在外部创建一个新的propertiet文件在文件中储存配置数据源

<properties resource="DBSource.properties" />
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/><!--配置事务管理的方式: JDBC,MANAGED-->
        <dataSource type="POOLED"><!--type定义数据连接方式: POOLED[使用连接池]|UNPOOLED|JNDI-->
            <property name="driver" value="${db.driver}"/><!--Class.forName("com.mysql.jdbc.Driver")-->
            <property name="url" value="${db.url}"/>
            <property name="username" value="${db.user}"/>
            <property name="password" value="${db.password}"/>
        </dataSource>
    </environment>
</environments>

方式4: 了解
在这里插入图片描述

—认识映射文件:

一。介绍:
MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC代码,减少了95%的代码量

二。说明:
1.映射文件名称和位置任意,不要求必须与POJO类在同一位置
2.MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
3.MyBatis映射文件顶层结构如下:

三。基本格式:

<mapper namespace="匿名空间">
    <select/insert/update/delete... id="业务标识名" resultType="封装结果的对象[实体类全名]" parameterType="占位符的来源">
        SQL命令
    </select/insert/update/delete等等>
</mapper>

四。说明:
1.namespace: 表示命名空间,类似Java包的作用.[在旧版中可选,在新版中必须配置]
2.id: 设置业务操作匿名,方便程序中调用.
3.parameterType: 指出将要传入SQL命令中的占位符的类型,可以是普通类型或自定义类.
4.resultType: 指出SQL命令执行结果的类型.若结果为集合,该属性值为元素的类型名.
5.statementType: 设置SQL执行对象的类型: STATEMENT,PREPARED[默认值],CALLABLE.
6.SQL命令末尾后的分号,可选

五。占位符:
1.介绍:
Mybatis映射文件中的SQL命令,支持以占位符方式设置字段的值.同JDBC那样,当执行SQL命令时需要额外指出占位符的值.

2.格式:

#{占位符名}  
#{uname}

3.说明:

  • .占位符的值可以来自实体对象,Map集合,普通数据
  • .若占位符的值来自普通数据,占位符名 任意. [仅1个占位符,比如 id]
  • .若占位符的值来自实体对象,占位符名 必须为对象的属性名
  • .若占位符的值来自Map集合,占位符名 必须为键名

|-----结果映射
介绍:
MyBatis自动将POJO对象的属性与查询结果集中字段名或添加/修改/删除中占位符名映射,实现对象与表的映射关系.
同时,MyBatis提供了手动设置POJO对象属性与执行结果映射的方式: [resultMap]

解决字段名与属性名不同,无法映射:

方式1: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

select id,   username as name,    sex,age,address from user

方式2: 通过[resultMap]标签来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

<resultMap>
<select id="" resultType="" resultMap="resultMap匿名A">
    SQL命令
</select>
<!--自定义映射规则-->
<resultMap id="resultMap匿名A" type="实体类全名">
	//用id属性来映射主键字段
    <id property="主键属性" column="主键字段名" />
    //用result属性来映射非主键字段
    <result property="普通属性" column="字段名" />
</resultMap>

-----加载映射文件:

方式1: resource方式加载映射文件

格式: 
<mapper resource="映射文件路径">
resource: 使用相对类路径,指出映射文件的位置.比如 bean/User.xml

方式2:class方式这里需要注意:接口类 和映射文件放在同一个目录下,并文件名要一致

格式: 
<mapper class="映射文件路径">
class: 使用类全名,指出映射器接口的位置.比如: bean.UserMapper[UserMapper为接口

方式3:url方式

格式: 
<mapper url="映射文件路径">
url: 使用绝对路径,指出映射文件的位置.比如: file:///bean/User.xml

方式4:包扫描加载映射文件 : 接口类 和映射文件放在同一个目录下,并文件名要一致

格式: 
<package name="包名" />
说明:
将指定包中所有接口类,在MyBatis中注册.
注意: mapper接口和映射文件名称要相同,且在同1目录下

|----自定义别名:

	格式:
	<typeAliases></typeAliases>
	
 方式1: 定义指定类的别名 [定义单个类的别名]
		<typeAlias type="类全名" alias="别名[名称任意]" />
	
			代码实例:
			···<!-- mybatis-config.xml 中 -->
				<typeAlias type="com.someapp.model.User[设置前类名称]" alias="User[设置后的类名称]"/>//设置user类的类全名别名为User.
			
				<!-- SQL 映射 XML 中 -->
				<select id="selectUsers" resultType="User[设置后的类别名]">
				  select id, username, hashedPassword
				  from some_table
				  where id = #{id}
				</select>
		
 方式2: 批量定义类别名 
		<typeAliases>
			<package name="包名" />
		</typeAliases>
		定义后别名等于类名,不区分大小写,但建议使用java命名规则 首字母小写。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值