mybatis使用注解开发

mybatis使用注解开发

在对接口就行实现时,我们既可以使用xml文件进行配置,也可以使用注解也进行配置。

使用注解进行配置,操作简单,但是功能也简单,复杂的操作还得使用xml配置来实现

使用注解实现查询

使用注解实现查询的底层逻辑是反射

使用注解进行查询与使用xml进行配置除了没有实现的mapper.xml文件外其他的都一致

**文件结构: **

文件结构

少了StudentMapper,xml文件

接口代码

1
2
3
4
5
6
7
8
9

public interface StudentMapper {

//测试使用注解来实现查询
@Select("select * from mybatis.student")
List<student> getStudentList();

}

此时的接口直接在抽象方法上使用注解@Select并且在()里编写SQL语句

核心配置文件代码:

1
2
3
<mappers>
<mapper class="com.dwx.mapper.StudentMapper"/>
</mappers>

虽然没有了xml,但是还是需要进行配置,这里使用的参数是class自然对应我们接口类的全路径

测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class test {
@Test
public void getStudentList(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
List<student> studentList = mapper.getStudentList();
for (student student : studentList) {
System.out.println(student.toString());
}
sqlSession.close();
}
}

测试代码和使用xml时一模一样 没有任何改变。

自动提交事务

之前我们使用的方法提交事务的方法是手动提交事务:

until文件中的代码:

1
sqlSessionFactory.openSession();

测试类中的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Test
public void InsertStudnet(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
//获得了sqlSession就需要进行联结获得mapper
UserDao mapper = sqlSession.getMapper(UserDao.class);
//通过mapper对象来进行操作
mapper.InsertStudent(new student(4,"王五","123456"));
//对于需要对数据库进行改动的如:“增删改” 都系要提交事务
sqlSession.commit();//此代码就是提交事务
//关闭sqlsession
sqlSession.close();
}

但是现在 我们在开始SQLsession时就直接设置自动提交事务

1
sqlsessionFactory.openSession(true);

此时就不需要sqlsession.commit(),每一条语句都会自动提交 但是如果sql出错还是会提交 会出现错误

使用注解实现有参查询

实现基础:@Param("名字")注解的使用

在参数前使用@Param("名字")这个注解,然后在@Select(“sql”)中使用#{"名字"}来获取参数。

接口代码:

1
2
3
//测试使用注解实现有参查询
@Select("select * from mybatis.student where id = #{id}")
student getStudentByID(@Param("id") int id);

注意:有几个参数就在几个参数前加@Param("名字")

使用注解实现增加

接口代码:

1
2
3
4
//测试使用注解实现增加
@Insert("insert into mybatis.student (id,name,password) values(#{id},#{name},#{password})")
int InsertStudent(student student);

注意:我们这里的参数是student,是我创建的实体类 也就是引用类,引用类是不需要添加@Params("名字")的,直接使用即可。通过#{"参数名"}就直接获取了应用参数内部包含的参数。

而且此时我们已经设置了自动提交事务,就不用在写sqlsession.commit()了。

使用注解实现删除

接口代码:

1
2
3
//测试使用注解实现删除
@Delete("delete from mybatis.student where id = #{id}")
int DeleteStudentById(@Param("id") int id);

使用注解实现修改

接口代码:

1
2
3
//测试使用注解实现修改
@Update("Update mybatis.student set name = #{name},password = #{password} where id = #{id}")
int UpdateStudentById(@Param("id") int id,@Param("name") String name,@Param("password") String password);

注意:修改sql的书写,有几个参数就在几个参数前加@Param("名字")

@Param("名字")使用的注意事项

  • 有几个参数就在几个参数前加@Param("名字")
  • 基本数据类型以及String加注解,自己创造的实体类(引用数据类型)不用加注解
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信