MyBatis项目部署逻辑

MyBatis执行SQL语句的时候,默认不显示任何内容,对于执行的是哪一条SQL,SQL的实际参数是什么,不能明确!所以先倒依赖吧!

 新建一个properties文件用于保存所有的核心配置内容

日志如何记录,记录的格式是什么样子,需要编写日志输出的配置文件log4j.properties....

------------ 日志导入截止到此,开始MyBatis抽取核心配置信息------------

新建一个properties文件用于保存所有的核心配置内容,起啥名都行,我用db.properties

将核心配置内容按照KEY=VALUE的方式声明在文件中,然后在mybatis.config.xml里面配置

 -----------------------------mybatis的数据库起别名!----------------------------

卧槽!SQL映射文件中类型名称过长,你能写的过来,不写错?来开始起别名~~~

单独起别名,批量起别名,先说起别名需要注意的事项~

        不推荐单独给某一个类起了别名之后,又用批量的方式覆盖掉!

        批量起别名的时候,<package>中的name写的是包的名字,不是类的名字!

好家伙,别懵,上面是单独起别名,

 下面是用~接下来是批量起别名。

**批量起别名之后,起别名的方式:类名变小驼峰,在SQL映射文件中,用别名代替。

路径不到类,到包即可,万万不可突破。

接下来就可以引用别名了,注意是小驼峰类名引用~~

-----------------------MyBatis接口代理XML开发模式----------------------------

通过MyBatis去完成数据操作(ORM),准备好你的数据库,和对应的实体类。

controller控制层,控制层Service,持久层dao,他们三个互相调用,好基友。

open 你的 eyes  每个的各自作用在图片上有。。

底层的原理:先编写接口,再编写SQL映射文件(SQL映射文件与接口之间的内容绑定起来),让MyBatis通过接口与SQL映射文件内容生成代理对象!


下面这图官方标头,进行了上面的起别名,数据库连接操作。

 编写接口(一个接口:针对于某一张表的增删改查方法的集合)--建包mapper-里面写接口,接口里写抽象方法....

编写SQL映射文件与接口进行绑定

(1)SQL映射文件的mapper根标签的namespace要指定接口的名称(包名+类名)

(2)SQL映射文件中(增删改查)标签的Id要指定为接口中的方法的名称

(3)SQL映射文件中(查)标签的resultType要指定为接口中方法的返回值类型

 

正常编译之后classes(输出目录)结构 DishMapper.xml不在任何包中不方便管理。

让SQL映射文件编译之后与接口处于同一个包,

在resources目录下按照接口在包中的层级,逐级建包。 

---------------------------------------------------------------------------------------------------------------------------------

★生成一个DishMapper接口的代理对象(MyBatis会自动根据接口中的方法,绑定了接口的SQL映射文件里面的SQL语句进行解析)生成代理对象。---编译后自动生成..

mybatis小鸟插件。。自己去安装...

----------------------------------------------------------一些问题---------------------------------------------------------

       MyBatis是根据查询出来的伪表的列名与要映射的类的变量名进行匹配,可能出现MyBatis中SQL映射文件解决字段名称不统一的情况。

**MyBatis推荐方法(手动指定映射关系),解决问题三部曲。

1.在SQL映射文件中编写一个<resultMap>标签,并且指定Id和目标类型

2.在<resultMap>标签中依次指定伪表结果列与实体类成员变量的映射关系

3.在<select>标签中如果想要将查询到的结果按照手动指定的映射关系进行封装,通过resultMap属性进行指定

———————————————————————————————————————————

 MyBatis接口代理的参数传递方式(单个简单参数)(多个简单参数)(单个复杂参数)(Map)

(1)在接口的方法中如何声明参数  

@Param注解用于形式修饰的形式参数在SQL映射文件中如何取值,指定的名字是什么,在SQL映射文件中就用什么来取!

(2)在SQL映射文件如何获取参数

 简单参数类型获取:通过在SQL中使用#{@Param注解指定的名称}来进行简单参数的获取;

如果是单个复杂数据,在SQL映射文件的标签上,先通过parameterType来指定参数的类型(参数的类名)[别名],在SQL中使用#{@Param指定的名称.属性名称}来获取参数对象的属性值;

上图更清晰。第一个简单,第二个复杂,第三个map

                                                                -后面是map存取

 -------------------------MyBatis接口代理注解开发模式--------------------------

对于简单的增删改查需求,可以注解开发,但还是推荐使用XML!

通过注解的方式在接口的方法上进行SQL语句的声明,可以通过代理对象进行执行!so easy。

 

这回就释放双手,不编写SQL映射文件,但是还要写接口。接口上写注解。

@Select("SQL语句")|@Insert("SQL语句")|@Delete("SQL语句")|@Update("SQL语句")

 就酱紫写sql语句。

------------------------------------动态sql-----------------------------------------------

SQL语句的动态拼接<sql>  <if>  <where>  <set>

1.<sql>将重复内容抽取到<sql>标签中,并且通过id给起个名字,在需要使用到公共内容的时候,通过<include>标签引入到SQL语句。

2.<if>指定条件进行判断,并且根据条件返回的结果,明确标签中的SQL语句是否参与整体的拼接,

标签的使用方式:<if test="">判断的内容 如果判断的内容结果为TRUE,完成<if>标签的内容在SQL语句中的拼接;进行if的时候,一定要保证判断的内容与符号之间有空格;在if的test获取参数值不用写#{},直接通过属性名.属性值/属性名获取值判断即可!

3.<where>去包含if标签,如果最终拼接的条件带有前AND,自动清楚掉,如果最终没有满足拼接的条件,WHERE也自动清除掉!

标签的使用方式:包含所有的条件

4.<set>去包含if标签的做更新判断的时候前,标签的使用方式:包含所有的更新字段

 1的配图

<sql>抽取当前XML文档中所有SQL语句中的重复部分抽取出来提高复用性!

2的配图

<if>指定条件进行判断,并且根据条件返回的结果,明确标签中的SQL语句是否参与整体的拼接

3的配图

<where>去包含if标签,如果最终拼接的条件带有前AND,自动清楚掉,如果最终没有满足拼接的条件,WHERE也自动清除掉!

4的配图

<set>去包含if标签的做更新判断的时候前,标签的使用方式:包含所有的更新字段

暂时先end,拜拜,后续有补的我再回来。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值