<!--插入 id 同一个命名空间只能有一个唯一的id,除非有不同的databaseId,可以被用来引用这条语句。如果是接口绑定的是否一定要保证接口和方法名相同 parameterType 用来设置该SQL的参数类型, 可以当它不存在,因为mybatis会根据接口方法的参数能够自动读取参数的类型 statementType 设置当前的statement, STATEMENT 代表jdbc的statement 不支持参数解析,不会设置 PREPARED 代表jdbc的PreparedStatement 支持参数解析, 默认的。 CALLABLE 代表jdbc的CallableStatement 执行存储过程 useGeneratedKeys 获取插入后的自动增长的主键(mysql 和 SQL Server ) keyProperty 将自动增长的主键赋值到哪个属性中 要获取自动增长的注解(数据库支持自动增长的功能): useGeneratedKeys="true" keyProperty="id" keyColumn 因为有可能存在组合主键的情况,指定获取其中哪一个字段 databaseId 用于配合databaseIdProvider 数据库厂商id 指定不同数据库下调用不同SQL, --> <insert id="insertEmp" useGeneratedKeys="true" keyProperty="id"> insert into emp(user_name) values (#{userName}) </insert>
如果数据库不支持自动增长列可以使用下面方法:
<insert id="insertEmp" > <!-- 如果数据库不支持自动增长列可以使用下面方法: selectKey 可以在增删改之前或之后运行 order BEFORE|AFTER 设置在增删改之前或之后运行 keyProperty 将当前查询结果放到哪个pojo属性中 resultType 返回的数据类型 --> <selectKey order="BEFORE" keyProperty="id" resultType="int"> SELECT MAX(id)+1 FROM emp </selectKey> INSERT INTO `mybatis`.`emp` (`id`,`user_name`) VALUES (#{id},#{username}); </insert>