<selectKey
keyProperty="id"
resultType="int"
order="BEFORE"
statementType="PREPARED">
在项目中,如果通过逆向工程生成的代码是不包含selectKey属性的,这个得自己加,比如,但往数据库插入数据时,用逆向工程生成的insertAuthor,此时得不到id,需要,通过selectKey。 select Last_insert_id() select Last_insert_id() insert into Author (id, username, password, email,bio, favourite_section) values (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})
如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
一样,只不过,现在的Java版本支持了Reader 方式得到 Reader reader = Resources.getResourceAsReader("mybatis.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//从当前线程中获取SqlSession对象
一般从SQLSessionFactory,不过可能考虑线程的知识等 SqlSession session = sqlSessionFactory.openSession(); session.selectOne,等底层的数据函数 操作delete insert update 查找所有selectList 单一selectOne 进一步改进,创建mapper类 诚然这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。
例如:
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
而mapper类只要在xml中创建即可
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
进一步使用注解方式创建mapper类的mysql
package org.mybatis.example;
public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
Blog selectBlog(int id);
}