CREATE TABLE user
(
id
int(11) NOT NULL AUTO_INCREMENT,
username
varchar(32) NOT NULL COMMENT ‘用户名称’,
sex
char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘性别’,
birthday
datetime DEFAULT NULL COMMENT ‘生日’,
address
varchar(256) DEFAULT NULL COMMENT ‘地址’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
Account表
CREATE TABLE account
(
ID
int(11) NOT NULL COMMENT ‘编号’,
UID
int(11) DEFAULT NULL COMMENT ‘用户编号’,
MONEY
double DEFAULT NULL COMMENT ‘金额’,
PRIMARY KEY (ID
),
KEY FK_Reference_8
(UID
),
CONSTRAINT FK_Reference_8
FOREIGN KEY (UID
) REFERENCES user
(id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 编写配置文件
jdbcConfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_study?characterEncoding=utf8
jdbc.username=root
jdbc.password=root
Mybatis-config.xml
1. 创建用户和账户实体类
用户实体类 User.java
public class User implements Serializable {
private Integer id;
private String username;
private String sex;
private Date birthday;
private String address;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return “User{” +
“id=” + id +
“, username='” + username + ‘’’ +
“, sex='” + sex + ‘’’ +
“, birthday=” + birthday +
“, address='” + address + ‘’’ +
‘}’;
}
}
账户实体类 Account.java
public class Account implements Serializable {
private Integer id;
private Integer uid;
private Double money;
// 从表实体应该包含一个主表实体的对象应用,和用户表构成一对一的关系,即一个账号只能由一个用户创建
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
@Override
public String toString() {
return “Account{” +
“id=” + id +
“, uid=” + uid +
“, money=” + money +
‘}’;
}
}
2. 创建 IAccountDao 接口和 IAccountDao.xml 文件
IAccountDao
public interface IAccountDao {
/**
-
查询所有账户信息
-
@return
*/
List findAll();
}
IAccountDao.xml
SELECT
FROM
account
3 .在 Mybatis-config.xml 配置文件中注册映射文件
4. 在 Mybatis-config.xml 配置文件中开启懒加载配置
5. 测试类(只查询账户信息)
AccountTest
public class AccountTest {
private InputStream input;
private SqlSession session;
private IAccountDao accountDao;
/**
-
初始化操作
-
@throws Exception
*/
@Before // 用于在测试方法执行之前执行
public void init() throws Exception {
// 1.读取配置文件
input = Resources.getResourceAsStream(“Mybatis-config.xml”);
// 2.获取SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input);
// 3.获取SqlSession 对象
session = factory.openSession();
// 4.获取dao接口的代理对象
accountDao = session.getMapper(IAccountDao.class);
}
@After // 用于在测试方法执行之后执行
public void destroy() throws Exception {
// 提交事务
session.commit();
// 释放资源
session.close();
input.close();
}
/**
- 查询所有账户信息
*/
@Test
public void testFindAll() {
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
- 算法与编程
- 数据库部分
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
se();
input.close();
}
/**
- 查询所有账户信息
*/
@Test
public void testFindAll() {
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
[外链图片转存中…(img-aEkyLj1D-1714057252816)]
- 算法与编程
[外链图片转存中…(img-ltMd3mES-1714057252817)]
- 数据库部分
[外链图片转存中…(img-LBjbnAUo-1714057252817)]
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
[外链图片转存中…(img-3X9ImsZm-1714057252817)]
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。