Mybatis学习之路(一)

1. mybatis框架原理

1.1 mybatis是什么?

mybatis是一个持久层的框架,是apache下的定级项目。托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)

mybati让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足需要Sql语句

mybatis可以将向prepareStatement中输入参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。

1.2 mybatis框架




2. mybatis入门程序(增删改查)

2.1环境

mybatis的jar包

从:https://github.com/mybatis/mybatis-3/releases下载

lib:依赖包

mybatis:核心包

加入mysql驱动包



2.2 SqlMapConfig.xml

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


2.3 log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=debug, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace


2.4需求

2.4.1根据用户id(主键)查询用户信息

2.4.1.1映射文件

映射文件命名:

User.xml(原始ibatis命名),mapper代理开发映射文件名称叫做XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml

在映射文件中配置sql语句



2.4.1.2在SqlMapConfig.xml加载映射文件

在sqlmapconfig.xml中加载User.xml



2.4.1.3程序代码


2.4.2根据用户名称模糊查询用户信息

2.4.2.1映射文件

模糊查询的select配置


2.4.2.2程序代码

因为是多条记录,所以用List存储遍历输出



2.4.3添加用户

2.4.3.1映射文件

在User.xml中配置添加用户的Statement



2.4.3.2程序代码


2.4.3.3自增主键的返回

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

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

SELECT LAST_INSERT_ID()

 

是在insert之后调用此函数。




2.4.3.4非自增主键的返回

使用mysql的uuid()函数生成主键,需要修改表中id字段类型为String,长度设置为35位

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

SELECT UUID()

 

执行是在insert语句之前



通过oracle的序列生成主键




2.4.4更改用户

2.4.4.1映射文件


2.4.4.2程序代码

2.4.5删除用户

2.4.5.1映射文件

2.4.5.2程序代码


2.5总结

2.5.1 parameterType

在映射文件中通过parameterType指定输入参数的类型

2.5.2 resultType

在映射文件中通过resultType指定输出结果的类型

2.5.3 #{}和${}

#{}表示一个占位符,#{}接收输入参数,类型可以是简单类型,pojo,hashmap

如果接收简单类型,#{}中可以写成value或其他名称。

#{}接收pojo对象值,通过OGNL读取对象中的属性值。通过属性.属性.属性….方式获取对象属性值。

 

${}表示一个拼接符,会引入SQL注入,所以不建议使用${}

${}接收输入参数,类型可以是简单类型,pojo,hashmap

如果接受简单类型,${}中只能写成value。

2.5.4 selectOne和selectList

selectOne表示查询出一条记录进行映射

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

2.6 mybatis和hibernate本质区别和应用场景

hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。

缺点:对sql语句优化、修改比较困难。

应用场景:

       适用于需求变化较少的中小型项目,比如:后台管理系统,ERP,ORM,OA…

mybatis:专注是sql本身,需要程序员自己去编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,需要程序员自己写sql,mybatis也可以实现映射(输入、输出映射)

应用场景:

       适用于需求变化较多的项目,比如:互联网项目。

 

企业进行技术选型:低成本、高回报的原则,根据项目组本身技术力量选择。






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值