Mybatis与其说是采用注解开发,不如说是变相的,更加轻松的写增删改查,但是它对于一些复杂的sql语句,就力不从心,所以,如果你的业务需求是简单的sql就能完成,我建议你使用注解开发。但是原来的xml构建sqlsession工厂的方式更加灵活。
(注意:本文不提供基础的mybatis如何配置的教程,建议先去看官方文档再看本文章)
我写了用来获取session的工具类。
public class MyUtils {
static SqlSessionFactory sqlSessionFactory =null;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(false);
}
}
值得注意的是,如果你写增删改老是忘记提交事务,我建议你把工厂的openSession方法的参数改成true,这里就会把autoCommit的值修改成true
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
下面是用注解开发的流程,
1.接口
public interface UserMapper {
@Select("select * from user")
List getAllUserList();
@Select("select * from user where id = #{id}")
List getUserById(@Param("id") int id);
@Insert("insert into user(id,name,pwd)values(#{id},#{userName},#{password})")
int addUser(User user);
@Update("update user set name = #{userName},pwd = #{password} where id = #{id}")
int updateUser(User user);
}
2.核心配置文件,注册mapper
值得一提的是,
如果你是用注解开发的,这里面建议用类名注册
如果是用xml开发的,建议用resource来映射出当前mapper下的xml路径
如果上面两种方式都用了,那就都引入。
3.测试类
完全有效!
public class Test {
@org.junit.Test
public void test(){
SqlSession sqlSession = MyUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(3,"aaa","bbb"));
}
}



