mybatis和springMVC通过订单商品 案例驱动
对原生态jdbc程序(单独使用jdbc开发)问题总结
mybatis框架原理:
mybatis入门程序:
用户的增,删,改,查。
mybatis开发的dao俩种方法
原始dao开发方法(程序需要编写dao接口和dao实现类)(*)
mybatis的mapper接口(相当于dao接口)代理开发方法(掌握)
mybatis配置文件SqlMapConfig.xml
mybatis核心:
mybatis输入映射(*)
mybatis输出映射(*)
mybatis的动态sql:(*)
1.对原生态jdbc程序中问题总结
1.java环境:jdk
eclipse:indigo
mysql:5.1
1.2数据库的创建
sql_table.sql记录表结构
sql_data.sql:记录测试数据:在实际企业级开发中 最后提供一个初始化数据脚本
1.3jdbc程序
使用jdbc查询mysql数据库中用户表的记录
创建java工程加入jar
驱动器驱动包(mysql)
1.4问题总结
1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源的浪费,影响
数据性能
解决方案:使用数据库连接池管理数据库管理数据库连接
2将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护
设想:将数据sql语句配置在xml配置文件中,既使sql变化,不需要java代码进行重新编译
3.向prepareStatement中设置参数“:对占位符位置和设置参数值,硬编码在java代码中,不利于系统维护
设想将sql语句及占位符号和参数全部配置在xml文件中
4.从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进硬编码,不利于系统维护
设想。将查询的结果集。自动映射成java代码
2.mybatis框架:
下载官网:https://github.com/mybatis/mybatis-3/releases
2.1mybatis是什么?
mybatis是一个持久层的框架,是Apache下的项目集
mybatis托管到goolecode下,再后来托管到github下( )
mybatis让程序将主要精力放在sql上。设想,mybatis提供的映射方式,自由灵活生成(半自动化,
大部分需求程序员编写sql)满足需要sql语句。
mybatis可以将向prepareStatement中的输入的参数自动进行输入映射。将查询结果集灵活映射成java对象
(输出映射)。
3.入门程序
3.1需求:
根据用户id(主键)查询用户信息
根据用户名称模糊查询用户信息
添加用户
删除用户
更新用户
3.2环境
java环境
eclipse
mysql
mybatis运行环境包 3.2.7版本
lib包下依赖包
mybatis.jar核心包
mybatis.PDF操作指南
加入mysql驱动包
3.3log4j.properties
# Global logging configuration
#在开发环境下日志级别设置成DEBUG,生产环境成info或error
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.4SqlMapConfig.xml
配置mybatis的运行环境,数据源,事务等
3.5根据用户id(主键)查询用户信息
3.51创建po类
public class User{
private int id;
private String userame;
private String sex;
}
3.51 映射文件(User.xml,(原始 libatis) mapper代理开发映射文件叫做 Usermapper.xml ItemMapper.xml)
在映射文件中配置sql语句
3.53在SqlMapConfig.xml加载映射文件
3.54程序的编写
3.6根据用户名称模糊查询用户信息
3.7小结
3.7.1parameterType
在映射文件中通过parameterType 指定输入 参数的类型
3.7.2 resultType
在映射文件中通过parameterType 指定输出结果的类型
3.7.3
#{} 表示一个占位符:接受输入的参数 类型可以是简单类型 pojo hashmap
如果接受简单类型,#{}可以写成value或其他名称
#{}接收pojo对象值,通过OGNL读取对象中的属性值 通过属性.属性.属性..的方式获取对象的属性值
${}表示一个拼接符号,会引用sql注入 所以不建议使用${}
3.7.4 selectOne & selectList
selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现使用selectList也可以实现(List中只有一个对象)
selectList表示查询出一个列表(多条记录)进行映射没如果使用selecList查询多条语句,不能使用selectList
3.7添加用户
自增主键的返回
< insert id="insertUser" parameterTyoe="mybaties.po.User">
<selectkey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
selectkey>
insert into course(cname,cpno,ccredit) value(#{cname},#{cpno},#{ccredit})
select>
非自增主键的返回(使用UUID)
使用mysql的uuid()的函数生成主键,需要修改表中的id字段类型为string。长度为35位
执行思路
先通过uuid()查询到主键。将主键输入,到sql语句中
执行uuid语句顺序相对于insert语句之前执行,
<selectkey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT uuid()
selectkey>
insert into course(cid,cname,cpno,ccredit) value(#{cid},#{cname},#{cpno},#{ccredit})
select>
3.9删除用户
<delete id="deleteUser" parameterType="java,lang,Integer">
delete from course where id=
delete>
3.10跟新用户
update course set cname=#{cname},#{cpno) where id=
3.11 mybatis和hibernate本质区别和应用场景
hibernate:是一个标准的ORM框架(对象关系映射,)入门门款较高,不需要程序写sql,sql语句自动生成
对sql语句进行优化,修改标胶困难的
应用场景
适用与需求变化不多的中小型项目,比如:后台管理系统erp orm oa..
mybatis:专注于sql本身,需要程员自己写sql语句,sql修改,优化比较方案。mybatis是一个不完全的ORM
框架,虽然是程序员自己写sql ,mybatis也可以实现映射,(输入映射,输出映射)
应用场景
适用=与需求变化较多的项目,比如:互联网项目,
企业进行技术选型,以低成本,高技术作为技术选型的原则,根据项目组的技术力量!