mybatis基础知识&(一)基础知识

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添加用户
自增主键的返回 
<!--
        para,eterType:指定输入参数的类型是pojo(包括用户信息)
        #{}中指定pojo的属性名,接收到poji对象的属性值。mybatis通过OGNL获取对象的属性值
        -->
    < insert id="insertUser" parameterTyoe="mybaties.po.User">
    <!-- 
    讲插入数据的主键返回,返回到user对象中
    SELECT LAST_INSERT_ID():得到刚insert 进去记得的主将的值,只适用于自增主键
    keyProperty: 将查询到主键设置到parameterType指定的对象的那个属性
    order :SELECT LAST_INSERT_ID()执行顺序,相当于insert语句来说他的顺序
    resultType  SELECT LAST_INSERT_ID()返回数据的类型
    -->
    <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语句之前执行,
<!--
        使用mysql的uuid()生成主键
        执行过程
        就先通过uuid得到主键,将主键设置到user对象的id属性中
        其次在insert执行时。从user对象中取出id属性值
    -->
    <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=#{id}
    </delete>
3.10跟新用户
<!--
    需要用户的id
    需要用户的跟新信息
    parameterType指定user对象,包括id和跟新信息,注意id必须存在
    #{id} 从输入user对象中获取id属性值
-->
    <update  id="updateUser" parameterType=“mybatis。po.User”>
        update course  set  cname=#{cname},#{cpno) where id=#{id}
    </update>
3.11 mybatis和hibernate本质区别和应用场景
    hibernate:是一个标准的ORM框架(对象关系映射,)入门门款较高,不需要程序写sql,sql语句自动生成
    对sql语句进行优化,修改标胶困难的
    应用场景
        适用与需求变化不多的中小型项目,比如:后台管理系统erp orm oa..
    mybatis:专注于sql本身,需要程员自己写sql语句,sql修改,优化比较方案。mybatis是一个不完全的ORM
        框架,虽然是程序员自己写sql ,mybatis也可以实现映射,(输入映射,输出映射)
    应用场景
        适用=与需求变化较多的项目,比如:互联网项目,
    企业进行技术选型,以低成本,高技术作为技术选型的原则,根据项目组的技术力量!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值