Mybatis一对一结果映射

目录结构

目录结构

创建数据库相应的表

一个账户对应一个用户
accout

CREATE TABLE `account` (`aid` int(11) NOT NULL AUTO_INCREMENT,`accountname` varchar(20) DEFAULT NULL,`money` float(10,2) DEFAULT NULL,`userId` int(11) DEFAULT NULL,PRIMARY KEY (`aid`),KEY `userId` (`userId`),CONSTRAINT `account_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

user

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) DEFAULT NULL,`PASSWORD` varchar(20) DEFAULT NULL,`sex` varchar(2) DEFAULT NULL,`birthday` date DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;

domain 实体类

Account

package com.william.domain;/*** @author :lijunxuan* @date :Created in 2020/2/2  20:35* @description :* @version: 1.0*/
public class Account {Integer aid;String accountname;Float money;Integer userId;User user;@Overridepublic String toString() {return "Account{" +"aid=" + aid +", accountname='" + accountname + '\'' +", money=" + money +", userId=" + userId +", user=" + user +'}';}public Integer getAid() {return aid;}public void setAid(Integer aid) {this.aid = aid;}public String getAccountname() {return accountname;}public void setAccountname(String accountname) {this.accountname = accountname;}public Float getMoney() {return money;}public void setMoney(Float money) {this.money = money;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}
}

User

package com.william.domain;/*** @author :lijunxuan* @date :Created in 2020/2/2  20:37* @description :* @version: 1.0*/
public class User {Integer id;String username;String PASSWORD;String sex;String birthday;@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", PASSWORD='" + PASSWORD + '\'' +", sex='" + sex + '\'' +", birthday='" + birthday + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPASSWORD() {return PASSWORD;}public void setPASSWORD(String PASSWORD) {this.PASSWORD = PASSWORD;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}
}

mapper Dao

package com.william.mapper;import com.william.domain.Account;
import com.william.domain.QueryVo;
import com.william.domain.Usert;
import org.apache.ibatis.annotations.Param;import java.util.HashMap;
import java.util.List;public interface Usermapper {List<Account> findByhaha();
}

mapper.xml 映射文件

可以有两种配置方式:

方式一:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.william.mapper.Usermapper"><resultMap id="accoutMap" type="account"><id property="aid" column="aid"></id><result property="accountname" column="accountname"></result><result property="money" column="money"></result><result property="userId" column="userId"></result><result property="user.id" column="id"></result><result property="user.username" column="username"></result><result property="user.PASSWORD" column="PASSWORD"></result><result property="user.sex" column="sex"></result><result property="user.birthday" column="birthday"></result></resultMap><select id="findByhaha" resultMap="accoutMap">select * from account a ,user u where a.userId=u.id;</select>
</mapper>

方式二:使用association标签

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.william.dao.AccountDao"><resultMap id="resultMap" type="account"><id column="aid" property="aid"></id><result column="accountname" property="accountname"></result><result column="money" property="money"></result><result column="userId" property="userId"></result><!--association ; 关联 联想 配置一对一映射--><!--property :属性名javaType : 属性的类型--><association property="user" javaType="user"><id column="id" property="id"></id><result column="username" property="username"></result><result column="PASSWORD" property="PASSWORD"></result><result column="sex" property="sex"></result><result column="birthday" property="birthday"></result></association></resultMap><select id="findAll" resultMap="resultMap">select * from account a,user u where a.userId=u.id;</select>
</mapper>

配置文件

1.db.properties 数据库配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/web02
jdbc.user=root
jdbc.password=root

2.log4j.properties日志文件

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE, info# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

3.核心配置文件Mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"></properties><typeAliases><package name="com.william.domain"></package></typeAliases><environments default="develoment"><environment id="develoment"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property></dataSource></environment></environments><mappers><!--<mapper resource="com/william/Mapper.xml"></mapper>--><package name="com.william.mapper"></package></mappers>
</configuration>

test测试类

package com.william.test;import com.william.domain.Account;
import com.william.domain.QueryVo;
import com.william.domain.Usert;
import com.william.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.Test;import java.io.IOException;
import java.util.HashMap;
import java.util.List;/*** @author :lijunxuan* @date :Created in 2020/2/2  13:28* @description :* @version: 1.0*/
public class TestMyBatis {/*** 查询所有的账户相同的*/@Testpublic void selectAll(){try {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml"));SqlSession sqlSession = sqlSessionFactory.openSession(true);Usermapper mapper = sqlSession.getMapper(Usermapper.class);List<Account> list = mapper.findByhaha();for (Account account : list) {System.out.println(account.getAid());System.out.println(account);}} catch (IOException e) {e.printStackTrace();}}
}

测试结果

测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lambda表达式java_Lambda表达式Java教程

lambda表达式java在本文中&#xff0c;我们提供了全面的Lambda Expressions Java教程。 1. Lambda Expressions Java教程–简介 Lambda表达式被认为是Java 8中引入的最好的功能之一。Lambda表达式被认为是Java进入函数式编程世界的第一步 。 可以将其视为无需类即可创建的函数…

MySQL命令之mysqlhotcopy -- 热备份

文章目录命令介绍命令格式安装 mysqlhotcopy常用选项命令介绍 mysqlhotcopy 只是简单的缓存写入和文件复制的过程&#xff0c;其使用 LOCK TABLES、FLUSH TABLES 和 CP 来进行快速备份,占用资源和备份速度比 mysqldump 快很多很多。特别适合大的数据库&#xff0c;但需要注意的…

trackby_使用trackBy启动流程

trackby仍然沿用我的Corda Services趋势&#xff0c;我还有其他一些技巧可帮助您的CorDapp顺利工作。 这次&#xff0c;我们将重点关注使用trackBy从服务内部启动流以及如果您不小心可能会引发的离散问题。 这应该是一个相对简短的职位&#xff0c;因为我可以依靠以前的职位&a…

SQL查询语句的排序

order by column1 asc, column2 desc -- 按column1升序排序&#xff0c;若column1值相同&#xff0c;则按column1降序排序asc&#xff0c;ascend 的缩写&#xff0c;表示正序&#xff0c;即升序&#xff0c;从小到大&#xff0c;可以省略&#xff0c;默认的 desc&#xff0c;de…

SpringBoot创建项目入门案例

目录结构 一、创建SpringBoot项目 1.创建骨架名称 2.给项目命名 3.配置pom.xml文件 4.MySql的驱动包 5.自动生成的pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xs…

apache spark_Apache Spark Job的剖析

apache sparkApache Spark是通用的大规模数据处理框架。 了解spark如何执行作业对于获取大部分作业非常重要。 关于Spark评估范式的简要介绍&#xff1a;Spark使用的是惰性评估范式&#xff0c;在该范式中&#xff0c;Spark应用程序在驱动程序调用“ Action”之前不会执行任何…

MySQL常用权限的解释

文章目录全局管理权限数据库/数据表/数据列权限特别的权限全局管理权限 FILE: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表&#xff0c;刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限 ALTER: 修改已…

No identifier specified for entity没有为实体指定标识符

异常 ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userController’: Injection of resour…

aws jenkins_Jenkins在AWS上(第1部分)

aws jenkins这是我对PEAT UK播客的逐字记录&#xff1a; 你好&#xff0c;再一次到另一个热点。 我叫Peter Pilgrim。 我曾经是DevOps专家&#xff0c;欢迎观看另一集。 这是11 Jenkins n AWS的第一部分&#xff0c;我是一名平台工程师&#xff0c;并且是Java Champion。 在…

SELECT ... FOR UPDATE_手动加行级排他锁_行级写锁_行级独占锁

文章目录介绍加锁情况分析明确指定主键&#xff0c;并且数据真实存在&#xff0c;锁定行明确指定主键&#xff0c;但数据不存在&#xff0c;不加锁主键不明确&#xff0c;锁定整个表无主键&#xff0c;锁定整个表应用场景介绍 1.FOR UPDATE 加的锁是一种行级排他锁&#xff0c…

广义表

广义表(广义表也称为列表&#xff0c;是线性表的一种推广&#xff0c;也是数据元素的有序序列) 一、基础 1.如何设定链表结点?广义表中的数据元素可能为单元素(原子)或子表&#xff0c;由此需要两种结点:一种是表结点&#xff0c;用以表示广义表;一种是单元素结点&#xff0c;…

数据库各种锁详解

文章目录排他锁共享锁更新锁意向锁锁的粒度数据库自动加锁手动加锁各种锁之间的兼容问题排他锁 Exclusive Locks&#xff0c;英译&#xff1a;排他锁&#xff0c;简称 X 锁&#xff0c;又称为写锁或独占锁。排他锁分为表级排他锁和行级排他锁。 如果事务 T1 对数据行对象 A 加…

activiti dmn_新的DMN编辑器预览

activiti dmnWorkbench 7.13.0.Final于10月16日星期二发布&#xff0c;此版本带来了许多有趣的功能和重要的修复程序。 亮点之一是作为技术预览功能的新DMN编辑器&#xff0c;该功能仍在开发中&#xff0c;但您可以开始使用。 在本文中&#xff0c;您将学习如何启用DMN编辑器预…

MySQL的索引存储数据结构BTree和B+Tree的区别

文章目录BTree 原理示意图BTree 原理示意图BTree的树层级很少BTree 可以高效支持范围查找BTree 原理示意图 注&#xff1a;BTree 就是 B-Tree&#xff0c;实际上官方并没有 B-Tree 的说法。 BTree 原理示意图 BTree的树层级很少 BTree 的数据存在每个节点中&#xff0c;所以每…

jdk11 javafx_JDK 11上的JavaFX

jdk11 javafx在JFX第11版发布后&#xff0c;人们对JavaFX与JDK的解耦感到百感交集。 我们许多人认为现在是时候告别JavaFX并改用另一种GUI技术了&#xff0c;而另一些人对此情况感到高兴。 他们认为&#xff0c;将JavaFX与Oracle分离开来&#xff0c;并致力于将其作为开源社区驱…

配置Java环境变量

JAVA环境变量配置 一、新建系统变量 新建变量&#xff0c;找到安装目录新建一个JAVA_HOME,路径为bin目录的前一级目录。 可以安装多个JAVA版本&#xff0c;然后新建不同的JAVA_HOME名称&#xff0c;然后填写bin目录的前一级路径。 二、编辑环境变量 找到path,然后编辑%JAVA…

MySQL的存储引擎InnoDB,B+Tree数据结构索引的实现原理图(聚簇索引/聚集索引)

1.表数据文件本身就是按BTree组织的一个索引结构文件 2.InnoDB的BTree的索引数据结构中&#xff0c;表数据和索引数据合并在一起&#xff0c;即叶子节点包含了完整的数据记录&#xff0c;这样的索引叫聚簇索引。

idea 切换java11_Java 11就在这里,您准备好进行切换了吗?

idea 切换java11在应该将Java 9发行版“震撼我们的世界”一年之后&#xff0c;我们一直在等待的LTS版本终于出现了 我们知道&#xff0c;大多数开发人员&#xff0c;团队&#xff0c;公司等尚未通过Java 8进行更新。 即使去年发布了模块Java 9&#xff0c;随后在3月又发布了Ja…

编译Java源文件

编写 新建hello.java文件 注意类名要和文件名称相同&#xff0c;如果不相同会提示错误 public class hello{public static void main(String[] args) {System.out.println("HelloWorld");} }编译 javac hello.java 编译会生成相应的.class文件。 运行 java hell…

oracle jdk_两个Oracle JDK的故事

oracle jdk最近 &#xff0c;人们担心 Java开发人员现在会无意中使用错误的Oracle提供的JDK实现&#xff08;从JDK 11开始 &#xff09;&#xff0c; Oracle提供了开源OpenJDK的构建 &#xff0c;并且还主要基于OpenJDK源提供了商业JDK的构建。 下表比较并对比了Oracle提供的两…