Mybatis的增删改查

Posted 汪神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句,这个一般也能自动提交,但如果不设定的话是不会自动提交的,具体的在事务处理的时候做更详细的介绍。

 

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配置文件的方式,接口这种方式还是尽量不要使用,因为它对比较复杂的映射配置的时候是有一定的局限性的。


以上是关于Mybatis的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

mybatis的增删改查返回值小析

mybatis的增删改查返回值小析

MYBATIS01_概述及优缺点快速搭建工程Mybatis的增删改查操作总结

mybatis生成的增删改查怎么用

... 使用mybatis框架完成学生信息的增删改查操作的完整代码书写-代码拿走即用-看完秒懂哦

使用mybatis框架完成学生信息的增删改查操作的完整代码书写-代码拿走即用-看完秒懂哦