zoukankan      html  css  js  c++  java
  • Mybatis的增删改查

    对于MyBatis其他基本操作,就掌握sql语句就不难了

    比如insert操作

    <insert id="insertUser" parameterType="JiKeUser" statement="PREPARED" keyProperty="id" userGeneratedKeys="true">
        INSERT INTO JiKeUser(userName,password) VALUES (#{userName,jdbcType="VARCHAR"},#{password,jdbcType="VARCHAR"})
    </insert>

    insert标签的属性有一个是statementType,这个就是jdbc的预处理属性,一般如果用PreparedStatement的话,就statementType="PREPARED"

    keyProperty属性是主键的意思,而属性userGeneratedKsys是说采用了Mysql中的主键自增机制来完成了这个主键设定。

    而这个

    (#{userName,jdbcType="VARCHAR"}
    里面的jdbcType属性就是一个Mybatis进行的对mysql数据类型到java数据类型的转换,这个一般会自动进行,但如果无法自动进行转换的话,就要像这样手动进行转换。

    为什么这个parameterType可以只写个JiKeUser呢,这个resultType的值没有用完整的路径名,这是采用了简写机制,就是为类起了个别名,这个操作在基本配置文件用typeAliases来标识:

    <typeAliases>
        <typeAlias alias="JiKeUser" type="jike.book.pojo.JiKeUser"/>
    </typeAliases>

    噢噢噢注意,这个typeAliases标签的定义一定要在这个environment的定义之前!!

    然后看具体操作:

    JiKeUser jku = new JiKeUser();
    jku.setName = "Ben";
    jku.setPassword = "12344";
    session.insert("insertUser",jku);
    session.commit();//提交

    要注意insert完后要提交一下这个sql语句,这个一般也能自动提交,但如果不设定的话是不会自动提交的,具体的在事务处理的时候做更详细的介绍。

    insert操作有个特点,就是把一个对象传进来的时候,会同时为这个原始的对象赋上该赋的值,比如说自增的id,这是Mybatis的一个特点,就是说本来java里面的这个JiKeUser对象里的id属性是没有赋值的,但是你把它insert操作,整个对象传进来之后,Mybatis会为这个对象的id属性自动赋上自增的id值!(MyBatis的自动id返回机制)

    update操作:

    <update id="updateUser" parameterType="JiKeUser">
        UPDATE JiKeUser SET userName=#{userName,jdbcType="VARCHAR"},password=#{password,jdbcType="VARCHAR"} WHERE id = #{id,jdbcType="INTEGER"}
    </update>

    ……

    ……

    delete操作,这里我们换一种实现方式:

    之前都是用map配置文件的方式来实现队数据库的操作,现在我们mybatis比较古老的方法:map接口的方法来实现。

    用map接口来实现有两个要做的,1是写接口类,2是用注释来配置应用。

    public interface InterfaceJiKeUserMap {
      @Delete("delete from JiKeUser where id=#{id}")   //这就是个delete语句的一个注释
      public void deleteUser(Integer id);    
    }

    这种注释的写法其实和配置文件中的一样的,然后我们要给它定义一个方法。然后你调用这个方法的时候,它就会调用这个注释中的这个sql语句,也就是说这样就不需要map配置文件了。

    然后这个时候要想的就是怎么让基本配置文件找到这个接口。所以我们还有在基本配置文件中做一个设定。在基本配置文件的<mappers>下还要加点东西

    <mappers>
        <mapper resource="jike.book.map.jikeUser.xml"/>
        <mapper class="jike.book.map.InterfaceJiKeUserMap"/>
    </mappers>

    这个class就是接口的嘛。

    然后我们来看看怎么啦来使用这个接口:

    //首先要实现接口,这里实现的方式比较特殊,它是有mybatis提供的session来自动实现
    InterfaceJiKeUserMap ijum = session.getMapper(InterfaceJiKeUserMap.class);
    ijum.deleteUser(1);//有了这个实现的接口就可以调用方法了

    但是,一般我们还是使用这个xml配置文件的方式,接口这种方式还是尽量不要使用,因为它对比较复杂的映射配置的时候是有一定的局限性的。

  • 相关阅读:
    sql中保留2位小数
    C# 操作字符串,在某些特定的字符后面或前面添加其它字符
    Windows Server 2008 R2中上传和下载文件
    winform中显示标题,点击打开链接
    正则表达式
    winform重绘
    js获取元素的页面坐标
    剑指offer-从上往下打印二叉树
    剑指offer-栈的压入、弹出序列
    剑指offer-包含min函数的栈
  • 原文地址:https://www.cnblogs.com/wangshen31/p/7747523.html
Copyright © 2011-2022 走看看