注解开发
import com.example.pojo.User;
import org.apache.ibatis.annotations.Select;
public interface UserDao {
@Select("select * from mybatis.user where id = #{id}")
User getUserById(int id);
}
将原来的dao
层的接口加上对应的注解
<mappers>
<mapper class="com.example.dao.UserDao" />
</mappers>
去mybatis
的配置的xml
里面去设置对应得mapper路径
@Test
public void getUserById() {
// 获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSessionFactory();
// 获取mapper对象
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
测试类
** 使用注解来映射语句会使代码更加简单,但它存在的局限,如果想完成复杂的功能,还是使用xml来配置 **
注解完成CRUD
public interface UserDao {
@Select("select * from mybatis.user where id = #{id}")
User getUserById(@Param("id") int userId);
@Insert("insert into mybatis.user (`id`, `name`) values (#{id}, #{name})")
int addUser(User user);
@Update("update mybatis.user set `name` = #{name} where id = #{id}")
int updateUserById(User user);
@Delete("delete from mybatis.user where id = #{id}")
int deleteUserById(@Param("id") int userId);
}
自动提交事务
在创建工具类的时候实现自动提交事务
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
// 配置文件的路径
String resource = "mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSessionFactory() {
return sqlSessionFactory.openSession(true); // 设置参数为true即可
}
}