mybatis学习总结

Jdbc的问题

1 数据库连接,使用就创建,不适用就立即释放,对数据库进行频繁的链接开启和关闭,造成数据库资源的浪费,影响数据库的性能

解决方案:使用数据库的连接池管理数据库的链接

2 sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统的维护

解决方案设想:将sql语句放到配置文件当中

3 preparedStatement中设置参数,对占位符位置和设置参数,硬编码到java代码中,不利于系统的维护

设想:配置到xml配置文件中

4 resultSet中遍历结果集时,存在硬编码,不利于系统维护

设想:将查询到的结果集,自动映射成java对象

 

Mybatis框架

Mybatis是一个持久层框架  apache下的项目

 

Mybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化)满足需要的sql语句

 

Mybatis 可以将preparedStatement中的输入参数自动进行输入映射,将查询的结果集灵活映射成java对象(输出映射


 

 

Log4j.properties


SqlMapConfig.xml

配置mybatis的运行环境,数据源,事务等

映射文件

User.xml(原始命名 ibatis命名)mapper代理开发映射文件名为userMapper.xml

在映射文件中配置sql语句


 

id查询user


ParameterType:在映射中通过parameter指定输入参数的类型

ResultType:在映射文件中通过resultType制定结果的类型

#{}:表示一个占位符

${}:表示一个拼接符合,可能会引起sql注入,所以不建议使用

SelectOne:表示查寻出一条记录进行映射

SelectList:表示查询出一个列表(多个记录)进行映射

 

添加用户

自增主键返回:

Mysql自增主键,执行insert提交之前自动生成一个自增主键

通过mysql函数获得刚插入记录的自增主键

Last_insert_id()

insert之后调用该函数

 

修改insertuser定义

非自增主键返回:

删除用户

修改用户

mybatis开发dao的方法

sqlSession适用范围

sqlSessionFactoryBuilder:通过sqlSessionFactoryBuilder创建sqlSessionFactory

 

 

sqlSessionFactory:通过sqlSessionFactory创建sqlSession

 

原始dao开发的问题

Mapper代理方法

思路:

程序员还需编写一个mapper.xml映射文件

程序员只需要自己编写mapper接口(相当于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象

 

开发规范:

1.mapper.xmlnamespace等于mapper接口地址

2. mapper.java 接口中的方法名和mapper.xmlstatementid一致

3. mapper.java 接口中的方法输入参数和mapper.xmlstatementparameterType制定的类型一直

4. mapper.java 接口中的方法返回值的类型和mapper.xmlstatementresultType一致

总结:以上开发的规范主要是对下面代码进行统一生成

 

 

 

生成代理mapper

 

 

 

SqlMapConfig.xml

 

Properties属性

需求:将数据库连接参数单独配置在db.properties中,只需要在sqlMapConfig.xml中加载db.properties的属性值。在sqlMapConfig.xml就不需要对数据连接参数硬编码

 

数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其他xml可以引用该db.properties

 

Properties特性

 

sqlMapConfig.xml中加载db.properties

 

Properties特性


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值