一、前言
SSM-Mybatis【进阶一】总结了基于XML文件方式的基本操作,本文主要介绍基于注解方式的基本操作.
案例背景
1、数据库中的user表结构和数据分别如下:
user表结构:
user表中的数据:
2、假设项目已经搭建完成,并且基本的类(User、IUserDao)都创建完成,以及Mybatis主配置文件(SqlMapConfig.xml)都进行了正确的配置。
其中,User类的属性如下:
1 | public class User implements Serializable { |
项目结构如下图所示:
二、基本CRUD操作
(一)查询操作
1、查询所有用户信息
a. 在IUserDao接口中添加findAll方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 | public class AnnotationCRUDTest { |
2、根据id进行查询
a. 在IUserDao接口中添加findById方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
3、根据username进行模糊查询
a. 在IUserDao接口中添加findByUsername方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
4、使用聚合函数进行查询
a. 在IUserDao接口中添加findTotalCount方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
(二)添加操作
添加用户
a. 在IUserDao接口中添加方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
(三)删除操作
删除用户
a. 在IUserDao接口中添加方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
(四)更新操作
更新用户信息
a. 在IUserDao接口中添加方法和注解
1 | public interface IuserDao { |
b. 在AnnotationCRUDTest类中编写测试方法
1 |
|
三、Java类的属性名与Mysql表中列名的对应
在进行查询完之后,更重要的就是需要将查询结果进行封装。在封装时,如果Java类的属性名与Mysql表中列名是相同的话,那么Mybatis就可以直接进行封装。但是,如果类的属性名和标的列名不一致就会导致查询到的结果不能封装到对象中。
因此如果类中的属性名不是和列名完全一样的话,那么将两者进行一一对应的步骤是非常重要的。
原因:因为在进行封装时,Mybatis会根据列名才知道调用该对象的哪一个set方法,所以两者必须要有对应关系才能够进行封装。
通常由两种方法将两者进行对应:
方法一:给表中的列名指定别名
方法二:使用特殊注解进行对应
假设User类中的属性更改如下:
1 | public class User implements Serializable { |
那么以下就以findAll方法的配置进行举例。
(一)方法一
之前配置的findAll方法就可以更改如下:
1 | public interface IuserDao { |
(二)方法二
1 | public interface IuserDao { |
Java新手,若有错误,欢迎指正!