新闻详情

新闻详情

首页 / 资讯中心 / 详情

Mybatis注解开发

发布时间:2026/11/15 12:37:43来源:尧图网络
Mybatis注解开发
一、Mybatis的常用注解package com.ithiema.Dao; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; Data AllArgsConstructor NoArgsConstructor Builder public class User { private int id; private String username; private String password; private String perms; }package com.ithiema.Mapper; import com.ithiema.Dao.User; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; public interface UserMapper { Insert(INSERT INTO user(username,password,perms) VALUES(#{username},#{password},#{perms})) public void save(User user); Select(SELECT * FROM user) public ListUser findAll(); Select(SELECT id,username,password,perms FROM user WHERE id #{id}) public User findById(int id); Delete(DELETE FROM user WHERE id#{id}) public void delete(int id); Update(UPDATE user SET username#{username},password#{password},perms#{perms} WHERE id#{id}) public void update(User user); }drivercom.mysql.cj.jdbc.Driver usernameroot passwordadmin urljdbc:mysql://localhost:3306/dbstudy?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration !-- 顺序不能乱properties - settings - typeAliases - typeHandlers - environments - mappers -- !-- 1.加载外部properties数据库配置文件 -- properties resourcejdbc.properties !-- 也可以直接写property -- /properties !-- 2.全局设置 -- settings setting namelogImpl valueSLF4J/ setting namemapUnderscoreToCamelCase valuetrue/ /settings !-- 3.起别名简化mapper中实体类全限定名 -- typeAliases typeAlias typecom.ithiema.Dao.User aliasuser/typeAlias /typeAliases !-- 4.多环境配置default指定使用哪个环境 -- environments defaultdevelopment environment iddevelopment transactionManager typeJDBC/ dataSource typePOOLED property namedriver value${driver}/ property nameurl value${url}/ property nameusername value${username}/ property namepassword value${password}/ /dataSource /environment /environments !-- 5.注册Mapper映射文件核心 -- mappers !-- 方式1resource加载xml -- !-- mapper resourcecom.ithiema.mapper/UserMapper.xml/-- !-- 方式2扫描整个包接口名和xml同名同路径 -- package namecom.ithiema.Mapper/ /mappers /configurationpackage com.ithiema; import com.ithiema.Dao.User; import com.ithiema.Mapper.UserMapper; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class test { private UserMapper mapper; Before public void before() throws IOException { InputStream resourceAsStream Resources.getResourceAsStream(sqlMapConfig.xml); SqlSessionFactory build new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession build.openSession(true); mapper sqlSession.getMapper(UserMapper.class); } Test public void testSave(){ User user new User(); user.setUsername(tom); user.setPerms(user:add); mapper.save(user); } Test public void testUpdate(){ User user new User(); user.setId(7); user.setUsername(zavier); user.setPassword(123456); user.setPerms(user:update); mapper.update(user); } Test public void testDelete(){ User user new User(); mapper.delete(6); } Test public void testFindById(){ User user mapper.findById(2); System.out.println(user user); } Test public void testFindAll(){ ListUser all mapper.findAll(); for(User u:all){ System.out.println(u); } } }二、注解实现复杂映射开发一对一查询的两种方式package com.ithiema.Mapper; import com.ithiema.Dao.Order; import com.ithiema.Dao.User; import org.apache.ibatis.annotations.One; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import java.util.List; public interface OrderMapper { Select(select *,o.id oid from orders o,user u where o.uidu.id) // Results({ // Result(column oid, property id), // Result(column total, property total), // Result(column uid, property user.id), // Result(column username, property user.username), // Result(column password, property user.password), // }) Results({ Result(column oid, property id), Result(column total, property total), Result( property user,//要封装的属性的名称 column uid,//根据哪个字段去查询user表的数据 javaType User.class,//要封装的实体类型 //select属性代表 查询 的哪个接口的方法获得数据 one One(select com.ithiema.Mapper.UserMapper.findById) ) }) public ListOrder findAll(); }一对多查询package com.ithiema.Mapper; import com.ithiema.Dao.User; import org.apache.ibatis.annotations.*; import java.util.List; public interface UserMapper { Insert(INSERT INTO user(username,password,perms) VALUES(#{username},#{password},#{perms})) public void save(User user); Select(SELECT * FROM user) public ListUser findAll(); Select(SELECT id,username,password,perms FROM user WHERE id #{id}) public User findById(int id); Delete(DELETE FROM user WHERE id#{id}) public void delete(int id); Update(UPDATE user SET username#{username},password#{password},perms#{perms} WHERE id#{id}) public void update(User user); Select(select * from user) Results({ Result( idtrue, property id, column id),//idtrue表明是主键id Result(column username,property username), Result(column password, property password), Result( property orderList, column id, javaType List.class, many Many(select com.ithiema.Mapper.OrderMapper.findByUid) ) }) public ListUser findUserAndOrder(String username); }OrderMapper加一句 以供调用Select(select * from orders where uid#{uid})public ListOrder findByUid(int uid);package com.ithiema.Mapper; import com.ithiema.Dao.Order; import com.ithiema.Dao.User; import org.apache.ibatis.annotations.One; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import java.util.List; public interface OrderMapper { Select(select *,o.id oid from orders o,user u where o.uidu.id) // Results({ // Result(column oid, property id), // Result(column total, property total), // Result(column uid, property user.id), // Result(column username, property user.username), // Result(column password, property user.password), // }) Results({ Result(column oid, property id), Result(column total, property total), Result( property user,//要封装的属性的名称 column uid,//根据哪个字段去查询user表的数据 javaType User.class,//要封装的实体类型 //select属性代表 查询 的哪个接口的方法获得数据 one One(select com.ithiema.Mapper.UserMapper.findById) ) }) public ListOrder findAll(); Select(select * from orders where uid#{uid}) public ListOrder findByUid(int uid); }一对多多对多查询的数据库表请看这条链接Mybatis的多表操作问题-CSDN博客Select(select * from user) Results({ Result(id true,column id,property id), Result(column username,property username), Result(column password,property password), Result( property roleList, column id, javaType List.class, many Many(select com.ithiema.Mapper.RoleMapper.findByUid) ) }) public ListUser findUserAndRoleAll();还需引用package com.ithiema.Mapper; import org.apache.ibatis.annotations.Select; public interface RoleMapper { Select(select * from sys_user_role ur,sys_role r where ur.roleIdr.id AND ur.userId#{uid}) public ListRole findByUid(); }相对于一对多一对一的查询一对多查询多了一张中间表即将userid 与 roleid 对应的中间表。先将中间表和职能表进行链接得出内容再与user表进行链接。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉