MyBatis初识

什么是MyBatis
MyBatis支持定制化SQL,存储过程,高级映射的优秀持久层框架
MyBatis避免了所有的JDBC代码,与手动设置参数,遍历结果集的过程。
MyBatis可以对配置和原生Map使用简单的XML或注解,将接口与Java的pojo(普通Java对象)映射成数据库记录
传统JDBC开发中遇到的问题:
    1:数据库连接频繁创建,释放
    2:sql语句中存在硬编码,当需要修改sql的时候需要修改对应的Java代码,不利于维护。
    3:使用preparedStatement像占位符传递参数的时候存在硬编码,因为sql语句后面where的条件一般都不是
    固定写死的,有可能多,有可能少修改sql需要修改对应Java代码。
    4:对于结果分析存在硬编码(查询列明),sql变化会导致解析的结果集不一样,不利于维护。

MyBatisConf.xml  用于数据库的配置文件,配置数据库环境,参数,等所有信息。
typeAlias: 可以配置别名,type为类的权限定名,alias为别名
properties: 可以引入属性文件使用${key}进行取值
environments: 数据库环境,可以配置多个,需要制定默认使用哪个环境
mapper.xml用于配置model类与数据库表的关联,一个mapper.xml对应于一个model类,对应于数据库
中的一张表。
其内元素:
<mapper namespace="suibianqiaode"> mapper 为根元素,代表一个mapperxml文件,namespace
则代表这个文件的命名空间,根据这个名称可以定位到这个文件
insert :新增数据
update :更新数据
delete :删除数据
select :查询数据
通用配置属性:
元素                    作用
id:                sql的唯一标识符,不能重复
parameterType    表示调用sql的时候需要传递的参数类型,如果传入的model类,那么可以
                在sql中使用#{属性名}来取出传入model对象里的值。
                如果只有一个参数,并且是基本数据类型可以省略不写然后再sql中使用#{随便写}取值
resultType:     代表sql返回的结果集类型,可以直接指定model类,如果返回的是多条记录,
                会自动转换成对应model类型的list集合。需要:列名与model属性一致
resultMap:         当model属性名与数据库列明不匹配的时候可以定义resultMap在其中指定数据库
                 列名所对应的model属性

statementID:mapper的namespace+sql的ID,使用statementID就能定位到具体需要执行的sql。
例如:session.insert("suibianqiaode.add",user);    
一:使用statementID来进行数据库操作存在的缺点:
    1:传入的字符串参数statement只有在运行时才能知道是否错误
    2:sql需要的参数无法限定,传入错误的参数也只有运行的时候才能发现
二:使用Mapper接口的方式映射(当使用sqlsession.getMapper的时候mybatis会根据我们传入的接口,使用
动态代理技术自动为其生成一个代理实现类,并且在实现类中注入了sqlsession对象,让我们可以通过操作
代理对象来完成数据库的操作):
    1:保持接口的权限定名与mapper中的namespace一致
    2:方法名保持与对应mapper中的id一致
    3:方法中的参数与mapper中的parameterType一致
    4:方法中的返回值与mapper中的resultType一致

动态sql标签:
    if:判断,可以用来判断传过来的参数的值,返回结果为boolean,如果为true则直接if中的代码.
        如果为false则不执行
    set:会帮我们自动写set 关键字,并且会帮我们去除掉set作用域中最后的一个逗号(,)
    where:会帮我们自动写where关键字,并且会帮我们去除掉where作用域中第一个and或or
    choose:相当于Java中的switch,里面有多个when标签,当有一个when标签匹配的时候,剩下的
        则不在执行,如果所有的when都没有进入则进入otherwise    
    trim: 功能上类似于where,会在作用域的最前面加上指定前缀,并且可以去掉作用域中碰到的
         第一个指定内容,需要去掉的内容可以是多个,使用|分割,还可以指定后缀,并且去掉最后的
         相关内容。
    foreach:循环标签其属性有:
            collection:如果接口参数没有使用注解指定key,其内容为参数类型,否则填key
            item: 会将循环集合内容取出然后赋值给其内元素
            separator:每次循环的时候需要插入的分隔符
            index:循环的索引 从0开始
            open:循环开始的时候插入的内容(只执行一次)
            close:在循环结束后插入的内容)(只执行一次)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值