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

原文地址:https://www.cnblogs.com/wangshen31/p/7747523.html