文章目录
结合mybatis-配置文件方式,搞懂注解方式。
1 主要注解
注解 | 标签 | 说明 |
---|---|---|
@Insert | insert | 添加操作 |
@Update | update | 更新操作 |
@Delete | delete | 删除操作 |
@Select | select | 查询操作 |
@Result | result | 结果集中表字段与类属性映射 |
@Results | resultMap | 封装结果集,与@Result一起使用,@Results({@Result(),@Result()})或@Results(@Result()) |
@One | association | 一个结果,@Result属性one的赋值,@Result(one=@One(select=“查询方法的全路径”)) |
@Many | collection | 多个结果,@Result属性many的赋值@Result(many=@Many(select=“查询方法的全路径”)) |
2 单表查询
2.1 配置文件
主配置文件mybatis.xml,加载含注解文件的配置:
<!--加载映射文件-->
<mappers>
<!--加载UserMapper类-->
<mapper class="com.test.mapper.UserMapper"/>
</mappers>
2.2 接口类
接口类代替mapper.xml文件:
public interface UserMapper {
@Select("select * from tb_user")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "user_name",property = "userName"),
@Result(column = "make_time",property = "makeTime"),
@Result(column = "update_time",property = "updateTime")})
List<User> findAll();
}
2.3 测试
执行方法前获取接口,执行后关闭sqlsession:
//通过代理方式获取接口
public class UserTest {
private UserMapper userMapper;
private SqlSession sqlSession;
@Before
public void before() throws IOException {
//从类路径下、文件系统或url加载资源文件
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//openSession()默认开启事务,需要手动提交事务
//openSession(boolean autoCommit)参数为true,则自动提交事务,否则需要手动提交
//SqlSession中有所有执行sql语句、提交或回滚事务和获取映射器实例的方法
sqlSession = sqlSessionFactory.openSession(true);
//jdk动态代理方式获得UserDao接口的实现类对象(目标对象)
userMapper = sqlSession.getMapper(UserMapper.class);
}
@After
public void after(){
sqlSession.close();
}
@Test
public void testFindAll() throws IOException {
List<