ssm怎么自动排列序号6位数_SSM学习笔记 7 -MyBatis 3 ---- 四组件的介绍和实现

9c580df7dc109be777e5f61d70d52153.png

首先MyBatis会利用配置或者代码来生成SqlSessionFactory(工厂接口)

SqlSessionFactory的生成方式有2种:

1、XML方式(强烈推荐这种)

2、代码方式

为什么要说推荐XML方式了,因为代码方式修改很麻烦

重点介绍XML方式实现:

MyBatis的基础配置文件

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4     "http://mybatis.org//dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <typeAliases><!--别名-->
 7     <typeAlias alias="role" type="com.learn.ssm.chapter3.pojo.Role"/>
 8     </typeAliases>
 9 <!--数据库环境-->
10 <environments default="development">
11     <environment id="development">
12     <!--事务管理器-->
13     <transactionManager type="JDBC"/>
14     <dataSource type="POOLED">
15         <property name="driver" value="com.mysql.jdbc.Driver"/>
16         <property name="url" value"jdbc:mysql://localhost:3306/ssm"/>
17         <property name="username" value="root"/>
18         <property name="password" value="123456"/>
19     </dataSource>
20     </environment>
21     </environments>
22     
23     <!--映射文件-->
24     <mappers>
25         <mapper resource="com/learn/ssm/chapter3/mapper/RoleMapper.xml"/>
26     </mappers>
27 </configuration>

看基础配置文件,我们会它被分为俩部分

前面的是基础配置文件

下面的是映射文件

基础配置文件中的

<typeAlias>就是把后面type定义的l类的全路径名称转换为Role来记

<dataSource> POOLED表示的MyBatis自带的数据池

  它当中的<property>就像是变量,后面的给前面赋值,内容主要是数据库的(这个建议你去学习jdbc)

<mappers>这个是引入映射文件,这个我后面会讲

然后我们怎么通过xml文件构建SqlSessionFactory

SqlSessionFactory SqlSessionFactory = null;String resource="mybatis-config.xml";InputStream inputStream;try{inputStream = Resource.getResourceAsStream(resource);SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch(IOException e){ e.printStackTrace();

}

首先我们导入 mybatis-config.xml(就是上上面写的配置文件名字)

然后通过SqlSessionFactoryBuilder的builder的方法创建

下面是组件SqlSesssionFactory

SqlSession是MyBatis的核心接口

就好像jdbc的connection

它只是门面,真正做事情的不是它

它主要的功能有:

1、获取Mapper接口

2、发送SQL语句到数据库

3、实现事务的管理

实现代码:

1  //定义SqlSession变量
 2 SqlSession sqlSession = null;
 3 try{
 4     //开启SqlSession会话
 5     sqlSession = SqlSessionFactory.openSession();
 6     // some code(中间----业务的实现)
 7     //提交业务
 8     sqlSession.commit();
 9     }catch(Exception ex){
10     //如果无法提交,就回滚,重新开始
11     sqlSession.rollback();
12 }finally{
13     //确保sqlSession关闭成功
14     if(sqlSession!=null){
15         sqlSession.close();
16         }
17     }

关与SqlSession代码中为什么要关闭sqlsession:

因为如果不关闭,系统会崩溃掉

问题:

我开始的时候就介绍MaBytis四个组件间的图,我们知道

SqlSession的获取Mapper接口和发送SQL语句都需要先实现映射器的功能,

但时映射器也可以发送SQL语句,那么我们该怎么选择,或者是最好用什么了???

这个问题,我后面介绍完映射器,我会给答案(p-1)

映射器(最重要和最复杂的组件)

(先来三问)

问题:

1、映射器的定义

2、映射器的组成

3、映射器的作用

我的回答:

1、映射器(SQL Mapper):它是MaBytis新设计的组件,主要是由一个java接口和XML文件组成的,需要给出对应的SQL和映射规则

2、java接口 + XML文件

3、(01)描述映射关系

 (02)提供SQL语句,并可以配置SQL参数类型、返回类型、缓存刷新等信息

  (03) 提供动态SQL

  (04)配置缓存

然后我又有问题:

1、我们怎么实现它,有几种实现方式?

我的回答:

1、它的实现有两种:XML实现和注解实现,

这些方法我们需要先有一个实体类(我直接创建Role)

代码:

public class Role{ private Long id; private String rollName; private String note; //下面就是get和set自动生成的方法,我就不写了 }

我们先看   XML实现映射器

先来一个接口(必要的)

代码:

public interface RoleMapper{ //这个方法就是通过id获取Role对象 public Role getRole(Long id); }

然后开始写它的XML文件(这个重要是发送SQL语句)

 <?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">
<mapper namespace="com.learn.ssm.chapter3.mapper.RoleMapper">
`<select id="getRole" parameterType="long" resultType="role">
  select id ,role_name as roleName, note from t_note where id = #{id}
</select>
</mapper>

然后我看见这代码我就又有问题:

1、namespace是什么

2、id做什么的,parameter做什么,resultType做什么的

3、#{id}什么意思

我的答案:

1、namespace里面放的是接口的全限定名

2、id没什么意思,就是标记sql语句

  parameter是传递给sql语句long类型的参数

  resultType是返回值的类型,例子中是Role类型

3、表示传递进去的参数

上面就是完成了,XML方法实现映射器

然后下面我们进行第二种 注解实现映射器的方法

我又想到问题:

1、它跟上面的方法有什么不一样

2、怎么实现

3、优先级对比上面的方法,怎么样

我的回答:

1、注解这个方法,只需要一个接口就好了

2、怎么实现,我直接给代码;

  public interface RoleMapper2{

  @select(“select id ,role_name as roleName, note from t_note where id = #{id}”);

public Role getRole(Long id);

}

3、XML方法更加优先级

尼姆,终于写完了

我们这个随笔,主要是四个组件的介绍和实现

谢谢大家

看不明白,给个建议。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值