1.思维导图
2.要查询所有ipads的信息
Step1:创建Ipad类和数据库对应的表
(1) IPad类
package com.hh.domain;
import java.text.SimpleDateFormat;
import java.util.Date;
// 实体类
public class Ipad {
private Integer id; // 每个主键都有一个id
private String ipadName;
private Integer ipadPrice;
private Date BirthDate;
// 设置get、set方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getIpadName() {
return ipadName;
}
public void setIpadName(String ipadName) {
this.ipadName = ipadName;
}
public Integer getIpadPrice() {
return ipadPrice;
}
public void setIpadPrice(Integer ipadPrice) {
this.ipadPrice = ipadPrice;
}
public Date getBirthDate() {
return BirthDate;
}
public void setBirthDate(Date productBirthDate) {
this.BirthDate = BirthDate;
}
// 设置toString方法
@Override
public String toString() {
// sd.format(date)返回的是String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return "Ipad{" +
"id=" + id +
", ipadName='" + ipadName + '\'' +
", ipadPrice=" + ipadPrice +
", BirthDate=" + sdf.format(BirthDate) +
'}';
}
}
(2)创建数据库表
USE mybatis_db;
CREATE TABLE ipadlist1(
id INT(11) NOT NULL AUTO_INCREMENT,
ipadName VARCHAR(20) NOT NULL COMMENT 'ipad名称',
ipadPrice INT(10) DEFAULT NULL COMMENT 'ipad价格',
birthDate DATE DEFAULT NULL COMMENT '出厂日期',
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO ipadlist1(id, ipadName, ipadPrice, birthDate) VALUES(1, 'ipad 2020', 2999, '2020-09-30'), (2, 'ipad air4', 5399, '2020-09-30');
Step2:创建IpadMapper.xml和SqlMapConfig.xml文件
(1)IpadMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--不需要创建接口-->
<!--查询所有ipad的信息-->
<mapper namespace="ipad">
<select id="selectAll" resultType="com.hh.domain.Ipad">
select * from ipadlist1
</select>
</mapper>
(2)SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<!--配置事务管理器-->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/hh/dao/IpadMapper.xml"/>
</mappers>
</configuration>
Step3:创建selectIpadsTest类,从数据库表中选择所有的ipad
import com.hh.domain.Ipad;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class MybatisMappersTest {
/**
* junit中修饰的所有方法只能用public void修饰
*/
private SqlSession sqlSession;
private InputStream inputStream;
@Before // 在执行测试对象之前执行
public void createSqlSession() {
// 如果为空时,那么就应该赋值
try {
// 读取配置文件,生成自己输入流(这里要选择apache的mybatis.io
inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 获取SqlSessionFactory工厂
SqlSessionFactory factory = builder.build(inputStream);
// 获取SqlSession
sqlSession = factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
// 测试不创建接口,直接查询需要执行的sql语句的statement的id
@Test
public void selectIpadsTest(){
// 直接使用sqlSession的selectList的方法
List<Ipad> ipads = sqlSession.selectList("ipad.selectAll");
System.out.println("找到所有的ipad的信息:");
for (Ipad ipad : ipads) {
System.out.println(ipad);
}
}
@After
public void close(){
try {
sqlSession.close(); // 因为里面用到了connection
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}