• mybatis01


    Mybatis

    介绍:

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 201311月迁移到Github

    Mybatis通过xml或注解的方式将要执行的各种statementstatementpreparedStatemntCallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

    MyBatis框架:

     

    SqlMapConfig.xml: MyBatis核心配置文件

    Mapper.xml:一个表对应一个Mapper,sql语句

    SqlSeaaion执行sql语句,通过SqlSessionFactory得到对象

    1. srcnew一个File文件 名:log4j.properties  复制代码:

    # Global logging configuration

    log4j.rootLogger=DEBUG, stdout

    # 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

    mybatis默认使用log4j作为输出日志信息。

    1. srcnew一个xml文件  名: SqlMapConfig.xml  复制:

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE configuration

    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>

    <!-- 和spring整合后 environments配置将废除 -->

    <environments default="development">

    <environment id="development">

    <!-- 使用jdbc事务管理 -->

    <transactionManager type="JDBC" />

    <!-- 数据库连接池 -->

    <dataSource type="POOLED">

    <property name="driver" value="com.mysql.jdbc.Driver" />

    <property name="url"

    value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />

    <property name="username" value="root" />

    <property name="password" value="root" />

    </dataSource>

    </environment>

    </environments>

    </configuration>

    修改库名和密码

    1. 创建pojo

    pojo类作为mybatis进行sql映射使用,pojo类通常与数据库表对应,表的实体类

    1. 创建sql映射文件xml

    一个表对应一个xml

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE mapper

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper  namespace=””></mapper>//namespace属性,相当于包名的作用,用来区分(写所对应的接口的路径 com.oracle.mapper.userpammer

    查询:

    <select>直接写sql语句</select>

    新增:

    <insert></insert>

    删除:

    <delete></delete>

    修改

    <update></update>

    属性:

    Id:方法名  

    parameterType="传入类型" resultType="返回类型(自定义类型需要写完整的包名加类名,如果返回个集合写集合的泛型)"

    占位符:#{形参}

    通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换#{}可以有效防止sql注入 #{}可以接收简单类型值或pojo属性值 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

    如果是传入一个自定义类,占位符的形参需跟自定义类的变量名相同

    字符串拼接:${value}

    通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换 ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value

    1. xml需在总配置文件SqlMapConfig.xml中配置

    <mappers>

    <mapper  resource=”com/oracle/mapper/user.xmlxml所在地路径)”/>

    </mappers>

    1. 测试:

    查询:

    //加载配置文件

    String path="SqlMapConfig.xml";

    InputStream in= Resources.getResourceAsStream(path);

    //获取SqlSessionFactory

    SqlSessionFactory fac=new SqlSessionFactoryBuilder().build(in);

    //获取SqlSession对象

    SqlSession sqlsession=fac.openSession();

    返回值=Sqlsession.SelectOne(“namespace.方法名”,传入实参)

    //SelectOne() :获取单条数据

    //SelectList() :获取一个集合

    新增:

    //获取SqlSession对象

    SqlSession sqlsession=fac.openSession();

    sqlsession.insert("namespace.方法名",user);//自己创建一个user对象并传入值

    //手动提交

    //增删改都需要手动提交

    sqlsession.commit();

     

     

     

    动态代理方式:

    Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法

    Mapper接口开发需要遵循以下规范:

    1、 Mapper.xml文件中的namespacemapper接口的类路径相同。

    2、 Mapper接口方法名和Mapper.xml中定义的每个statementid相同

    3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql parameterType的类型相同

    4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sqlresultType的类型相同

     

    创建接口:

    需在表所对应的mapper.xml同路径下new一个接口 ,名跟xml名一样

    在写方法时,方法、传入参数、返回值都要与对应的xml中的相同//接口,只有方法声明

    SqlMapConfig.xml中改为:

    <mappers>

    <mapper  class=”不再是xml路径,改为接口的路径”/>

    </mappers>

     

    //加载配置文件

    String path="SqlMapConfig.xml";

    InputStream in= Resources.getResourceAsStream(path);

    //获取SqlSessionFactory

    SqlSessionFactory fac=new SqlSessionFactoryBuilder().build(in);

    //获取SqlSession对象

    SqlSession sqlsession=fac.openSession();

    //获取动态代理对象(实现类对象)

    接口名 usermapper=sqlsession.getMapper(接口名.class);

    返回值=usermapper.方法(参数);

    SqlMapConfig.xml配置文件:

    properties()

    src下创建db.properties配置文件

    driver=com.mysql.jdbc.Driver

    url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8

    username=root

    password=123456

    SqlMapConfig.xml中引入配置文件:

    <configuration>下:

    <properties resource="db.properties"></properties>

    原改为:

    <!-- 和spring整合后 environments配置将废除 -->

    <environments default="development">

    <environment id="development">

    <!-- 使用jdbc事务管理 -->

    <transactionManager type="JDBC"/>

    <!-- 数据库连接池 -->

    <dataSource type="POOLED">

    <property name="driver" value="${driver}"/>

    <property name="url"

    value="${url}"/>

    <property name="username" value="${username}"/>

    <property name="password" value="${password}"/>

    </dataSource>

    </environment>

    </environments>

    typeAliases:给类配别名

    <typeAliases>

    <!-- <typeAlias type="com.oracle.pojo.User完整的包名加类名,不区分 大小写"alias="User"/> -->

    <!-- 设别名 -->

    <package name="com.oracle.pojo"/>

    </typeAliases>

    mappers:映射器

    包下的所有接口全部配合

    <mappers>

    <package name="com.oracle.pojo(包名)"/>

    </mappers>

  • 相关阅读:
    《Linux Device Drivers》第十二章 PCI司机——note
    Swift开放StatsD后上传数据的出现,出现退换货503的Bug
    google login page
    Use GraceNote SDK in iOS(一)通过序列化GDO查询专辑封面
    【人在职场】能力与价值
    HDU 5067-Harry And Dig Machine(DFS)
    LeetCode:Merge Two Sorted Lists
    HTML5硕士学习笔记
    通过设置注册表隐藏桌面图标
    SharePoint 要一个多行文本类型字段为特殊类型的链接
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10891538.html
Copyright © 2020-2023  润新知