MyBatis

1.介绍Mybatis

MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录.
好处:方便开发使用

2.为什么使用mybatis

简化jdbc的操作以及占位符赋值以及查询结果集的封装。(以前的代码冗长)

3.Mybatis的使用

(1)第一步:引入mybatis和mysql的jar包(在pom.xml中配置依赖即可)

(2)第二步:创建mybatis的配置文件(取名为conf.xml 在resources目录下如下图)记得改value值 value值与自己的数据库匹配即可

 

(3)第三步:创建数据库表

(4)第四步:创建实体类

(5)第五步:创建mybatis和数据库的映射文件
在resources下创建一个文件夹mapper 在里面创建一个叫userMapper.xml的文件(名字自取)
作用: 映射实体和表之间的映射关系。

 把映射文件注册到配置文件上 conf.xml上

 (6)第六步:单元测试(记得在pom.xml中添加junit相关依赖)

4.lombok插件的使用

(1)作用;帮助自动生成实体类的get(),set(),toString() ,构造方法。

下载完毕 重启即可使用
(2)在pom.xml中添加相关依赖

(3)在实体层添加注解

5.使用mybatis完成增删改查的完整代码

(1)sql语句

(2)单元测试代码

6.部分代码优化

在conf.xml中添加

7.在控制台添加日志方便查看sql语句

如果报错则在控制台可直接观看到sql语句的错误 方便修改
(1)在pom.xml中添加相关依赖

 (2)在resources下创建一个文件为log4j.properties (文件名字必须叫这个名字)

 其余的配置文件如下

配置完相关文件后直接运行相关代码即可(以查询语句为例)

8.动态sql

8.1 什么是动态sql

sql的内容是变化的, 可以根据条件获取到不同的sql语句.
主要是where部分发生变化。
动态sql的实现, 使用的是mybatis提供的标签

8.2 为什么使用动态sql

使用动态sql可以解决某些功能的使用 例如使用条件查询某个商品 你输入价格,地区等等进行筛选,如果使用静态sql可能会查询出来的是一个空内容 但使用动态sql可以很好的解决这种问题 例如

8.3 动态sql的标签

8.3.1 if标签-单条件判断

作用:筛选条件语句
dao层方法为:

mapper层 8.3.2 choose标签 多条件分支判断

 

8.3.3 where语句

如果不使用where语句 就要在where其他判断语句前加入1=1 如 select * from tbl_user02 where 1=1加其他的if判断语句 如果我们不加入这个1=1就可以直接使用where语句 上面的choose和if都搭配使用 使用where 语句 可以自动消除第一个条件中的and 且加上where 例子如上面两个标签中即可

8.3.4 set标签

这个标签配合if标签一起用 一般用于修改语句 如果传递的参数为null 那么就不会修改该列的值

  8.3.5 foreach标签

循环标签 适用于批量添加、删除 和查询记录

(1)用于批量查询

具体代码实现
dao层

 

mapper层为 

 查询出三条记录

 (2)用于批量删除

dao层

 mapper层

测试类: 

  (3)用于批量添加

dao层

 mapper层

测试类:  8.3.6 sql片段

一般用于查询语句的时候 select * … 这种不推荐 所以用sql片段可以很好的解决这个问题

 

8.4 mybatis映射文件处理特殊字符

当我们使用条件语句查询的时候 就比如在某个范围中使用条件如 money>100 and money<200
这个条件在mapper中无法直接写所以需要特殊处理,有两种解决办法:

(1)转义字符处理

dao层

 mapper层

测试

 (2)<![CDATA[sql]]>

dao层

  mapper层

 测试

 

 

8.5 mybatis完成模糊查询

语法:select * from 表名 where 列名 like ‘%a%’ 但是% a %这样在mapper层无法使用 解决办法有两种

(1)使用字符串函数(concat)完成拼接

dao层

 mapper层

测试类 (2)使用${}

两者区别:concat不能解决sql注入的问题 第二种是预编译 可以解决sql注入问题 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值