首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MyBatis基础(SSM框架)

MyBatis基础(SSM框架)

作者头像
摸鱼的G
发布2023-02-22 10:56:36
发布2023-02-22 10:56:36
3410
举报
文章被收录于专栏:火属性小虫火属性小虫
MyBatis基础(SSM框架)

在当下 MyBatis 已经是最主流的持久层框架,具体一点就是操作数据库的框架;MyBatis 非常轻量,只需要通过简单的XML或者注解就可以完成数据映射和操作数据。

很多公司都采用 MyBatis 作为 Java 的持久层框架,主要的原因在于它可以灵活的自定义SQL又兼具ORM框架的特性。

Spring依赖: Spring Web、MyBatis Framework、MySQL Driver

DO对象规则

所有的 ORM 框架都需要有一个 Java 对象来映射数据库的表,并且是一一对应的,一般我们把这类对象称为DO对象,对象名称的规范是 表名+DO

比如user表对应的对象名称叫UserDO,comment表对应的对象为CommentDO,如果为test_user表可以使用UserDO或者TestUserDO一般使用前者

DO对象包规则

DO对象一般存放在xxx.xxx.dataobject目录下

如CommentDO放在com.test.comment.dataobject

数据类型

JDBC数据类型

Java数据类型

varchar

String

text

String

integer

int

double

double

bigint

long

datetime

date

DAO

在 Java 工程化中,我们一般会把数据层的服务称为DAO层,DAO层会包含对数据库操作的接口和实现类。

DAO层的包一般放在xxx.xxx.xxx.dao下并添加Mapper注解来方便映射xml

代码语言:javascript
复制
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserDAO {


}

创建玩DAO层之后,可以通过创建Controller来引用

代码语言:javascript
复制
@Controller
public class UserController {

    @Autowired
    private UserDAO userDAO;

}

添加接口方法

DAO层中可以添加接口方法如:

代码语言:javascript
复制
@Mapper
public interface UserDAO {

    @Select("SELECT id,user_name as userName,pwd,nick_name as nickName,avatar,gmt_created as gmtCreated,gmt_modified as gmtModified FROM user")
    List<UserDO> findAll();

}

这里的Select注解为SQL方法。使用别名对应DO层

代码语言:javascript
复制
 @Select("SELECT id,user_name as userName,pwd,nick_name as nickName,avatar,gmt_created as gmtCreated,gmt_modified as gmtModified FROM user")

使用Controller来使用方法

代码语言:javascript
复制
@Controller
public class UserController {

  @Autowired
  private UserDAO userDAO;

  @GetMapping("/users")
  @ResponseBody
  public List<UserDO> getAll() {
    return userDAO.findAll();
  }

}

插入

代码语言:javascript
复制
 @Insert("INSERT INTO user (user_name, pwd, nick_name,avatar,gmt_created,gmt_modified) VALUES(#{userName}, #{pwd}, #{nickName}, #{avatar},now(),now())")
  @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
  int insert(UserDO userDO);

使用@Insert来表示插入SQL语句,此时 values 内值中的#{} 表示自动通过UserDO上下文读取值

@Options表示主键的设置

修改

代码语言:javascript
复制
@Update("update user set nick_name=#{nickName},gmt_modified=now() where id=#{id}")

删除

代码语言:javascript
复制
@Delete("delete from user where id=#{id}")

传入参数

代码语言:javascript
复制
List<CommentDO> findByRefId(@Param("refId") String refId);

通过@Param 来定义一个别名在使用#{}可以直接写入别名来传入参数

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MyBatis基础(SSM框架)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档