当前位置:   article > 正文

SSM——7.Mybatis的注解开发_ssm注解开发之插入信息

ssm注解开发之插入信息

目录

 

1.前言

2.准备工作

3.具体书写

3.1 查询所有信息

3.2 通过id进行查询

 3.3 插入一条信息

 3.4 修改一条信息

 3.5 删除一条信息

​ 3.6 模糊查询 

 4.关联查询

        4.1 查询每个学生的老师

        4.2 查询每个学生的老师(使用延迟加载)

5.小结


这篇文章我们将来讲解一下Mybatis的注解开发。

1.前言

注解的方式比较简单,但是实际开发不推荐使用注解的方式,而推荐使用配置文件的方式,因为使用配置文件的方式不需要更改源代码

这里我先列一下常用的注解和其含义,然后我们根据具体实例来应用一下

@Insert :添加

@Update:修改

@Delete:删除

@Select:查询

@Result:实现结果集封装

@Results:可以和@Result一起使用,封装多个结果集

@One:实现一对一或多对一的结果集封装

@Many:实现一对多结果集封装

2.准备工作

下面,就让我们通过具体实例来看一下Mybatis的注解开发如何使用。

第一步,我们创建一张实验表(表中字段及其类型如下图如示):

 第二步,我们创建实体类(截图及代码如下):

  1. public class Car {
  2. private Integer id;
  3. private String name;
  4. private String paizhao;
  5. private String card;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public String getPaizhao() {
  19. return paizhao;
  20. }
  21. public void setPaizhao(String paizhao) {
  22. this.paizhao = paizhao;
  23. }
  24. public String getCard() {
  25. return card;
  26. }
  27. public void setCard(String card) {
  28. this.card = card;
  29. }
  30. @Override
  31. public String toString() {
  32. return "Car{" +
  33. "id=" + id +
  34. ", name='" + name + '\'' +
  35. ", paizhao='" + paizhao + '\'' +
  36. ", card='" + card + '\'' +
  37. '}';
  38. }
  39. }

第三步,我们创建一个接口(截图如下):

 第四步,在sqlMapConfig.xml文件中进行相关配置(截图如下):

说明:

第32行:这里是加载了dao包下的所有接口信息

第33行:这里是加载了dao包下的CarDao接口信息

这就是二者唯一的区别,都可以使用。

配置到这里就结束了,下面让我们看一下具体怎么写。

3.具体书写

之前,我们是先写xml文件,再写接口,然后写测试方法,其中xml与接口是有联系的。现在,没有了xml文件,我们就直接在接口中写SQL语句。下面根据实例,我们来看下具体的操作。

3.1 查询所有信息

例如:查询所有车辆的信息。

第一步:写接口中的方法,代码如下:

  1. @Select("select * from car")
  2. @Results(id = "CarMap01",value = {
  3. @Result(property = "id",column = "id"),
  4. @Result(property = "name",column = "name"),
  5. @Result(property = "paizhao",column = "paizhao"),
  6. @Result(property = "card",column = "card")
  7. })
  8. public List<Car> findAll();

然后,我们来看下截图:

说明:

第12行:@Select 是注解,表明这是一个用来查询的语句,后面括号内写具体的查询语句,这就没什么好说的

第13行:@Results 是对多个结果集的一种封装,我们是查询car表的所有信息,那么里面肯定有许多字段,我们就用@Results对这些字段进行一个封装,可以类比前面的resultType,id是这个结果集的名称,也叫唯一标识符。value是这个结果集所包含的字段信息。@Result 后面跟的内容可以理解为一种映射,是数据库字段到实体类变量的映射;property 后面跟实体类中定义的字段名称,column后面跟数据库中定义的字段名称。这个可以类比前面的resultMap。

第19行:很简单的一个小接口,没啥好说的。

第二步,写测试方法,代码如下:

  1. public class CarTest {
  2. private InputStream in =null;
  3. private SqlSession session= null;
  4. private CarDao carDao = null;
  5. @Before
  6. public void init() throws IOException {
  7. in = Resources.getResourceAsStream("sqlMapConfig.xml");
  8. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
  9. session = sqlSessionFactory.openSession();
  10. carDao = session.getMapper(CarDao.class);
  11. }
  12. @After //@After: 后置通知, 在方法执行之后执行 。
  13. public void destory() throws IOException {
  14. //释放资源
  15. session.close();
  16. in.close();
  17. }
  18. @Test
  19. public void findAll(){
  20. List<Car> cars = carDao.findAll();
  21. for (Car car: cars) {
  22. System.out.println(car.toString());
  23. }
  24. }
  25. }

注意:里面的东西需要自己导包

测试方法截图如下:

 第三步,执行,看结果:

有问题吗?没有问题!So easy!

3.2 通过id进行查询

例:查询id=1的汽车的信息

第一步,写接口中的方法,代码如下图所示:

  1. @Select("select * from car where id =#{id}")
  2. @ResultMap(value="CarMap01")
  3. public Car findById(Integer id);

截图如下所示:

 说明:

第23行:ResultMap,联系前面关联映射的resultMap的用法,后面的value写的是上面写好的Results的id,即调用上面的包装结果,当然,你也可以再写一遍

第二步,写测试方法(如下图所示):

 第三步,点击测试(结果如下图所示):

 3.3 插入一条信息

第一步,写接口中的方法,代码如下:

  1. @Insert("insert into car(name,paizhao,card) values(#{name},#{paizhao},#{card})")
  2. @SelectKey(statement = "select last_insert_id()",keyColumn = "id",keyProperty = "id",before = false,resultType = Integer.class)
  3. public int insertCar(Car car);

截图如下:

说明:

第24行:算是一种固定写法,不用管它,用的不多,记住就好

第二步,写测试方法(截图如下):

 

 第三步,运行测试(截图如下):

 3.4 修改一条信息

例:修改id=1的信息

第一步,写接口中的方法,如图:

 第二步,写测试方法,如图:

第三步,测试运行,如图:

 3.5 删除一条信息

按顺序,三步走,截图如下:

 
 3.6 模糊查询 

按顺序,三步走,截图如下:

 

 4.关联查询

4.1 查询每个学生的老师

第一步,相关配置:

注释掉 teacher类中的学生部分

解掉 student类中的老师部分 的注释

sqlMapConfig中写入加载语句

然后,三步走,截图如下:

 4.2 查询每个学生的老师(使用延迟加载)

 话不多说,三(四)步走,截图如下:

5.小结

这块内容用的不多,所以写的很简单,大家了解即可,如果想要使用,可以对照图片进行书写。

以上内容,如有错误,敬请指出!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/921968
推荐阅读
相关标签
  

闽ICP备14008679号