1 环境准备
1.1数据库表(tb_brand)及数据准备
-- 删除tb_brand表
drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
(
-- id 主键
id int primary key auto_increment,
-- 品牌名称
brand_name varchar(20),
-- 企业名称
company_name varchar(20),
-- 排序字段
ordered int,
-- 描述信息
description varchar(100),
-- 状态:0:禁用 1:启用
status int
);
-- 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
('小米', '小米科技有限公司', 50, 'are you ok', 1);
1.2实体类 Brand
public class Brand {
// id 主键
private Integer id;
// 品牌名称
private String brandName;
// 企业名称
private String companyName;
// 排序字段
private Integer ordered;
// 描述信息
private String description;
// 状态:0:禁用 1:启用
private Integer status;
//省略 setter and getter。自己写时要补全这部分代码
}
1.3依赖
<dependencies>
<!--配置mybatis依赖文件-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- 配置mysql的依赖文件-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<!-- logback 依赖文件 日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.11</version>
</dependency>
</dependencies>
1.4核心配置文件和mapper对应的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>
<!--别名用与sql映射文件-->
<typeAliases>
<package name="com.liuzhibin.pojo"/>
</typeAliases>
<!--environments :配置数据库连接环境信息 可以配置多个environments 通过default 属性 切换不同的environments-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据连接信息-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybats?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加载sql映射文件 处理sql语句-->
<mapper class="com.liuzhibin.mapper.BrandMapper"/>
</mappers>
</configuration>
<?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">
<mapper namespace="com.liuzhibin.mapper.UseMapper">
</mapper>
2 查询
编写接口方法:Mapper接口
参数:无
查询所有数据功能是不需要根据任何条件进行查询的,所以此方法不需要参数。结果:
List<Brand>
我们会将查询出来的每一条数据封装成一个 Brand
对象,而多条数据封装多个 Brand
对象,需要将这些对象封装到List集合中返回。
接口方法如下
@Select("select * from tb_brand")
List<Brand> selectAll();
在测试类中编写查询的方法
@Test
public void testSelectAll() throws IOException {
//1. 获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2. 获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3. 获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//4. 执行方法
List<Brand> brands = brandMapper.selectAll();
System.out.println(brands);
//5. 释放资源
sqlSession.close();
}
3 添加
因为的我们要添加的数据是一个Brand对象所以我们的参数是Brand对象
接口的方法如下
@Insert("insert into tb_brand (brand_name, company_name, ordered, description, status) value (#{brandName},#{companyName},#{ordered},#{description},#{status})")
void add(Brand brand);
在测试类中编写新增的方法
@Test
public void testAdd() throws IOException {
//接收参数
int status = 1;
String companyName = "波导手机";
String brandName = "波导";
String description = "手机中的战斗机";
int ordered = 100;
//封装对象
Brand brand = new Brand();
brand.setStatus(status);
brand.setCompanyName(companyName);
brand.setBrandName(brandName);
brand.setDescription(description);
brand.setOrdered(ordered);
//1. 获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2. 获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//SqlSession sqlSession = sqlSessionFactory.openSession(true); //设置自动提交事务,这种情况不需要手动提交事务了
//3. 获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//4. 执行方法
brandMapper.add(brand);
//提交事务
sqlSession.commit();
//5. 释放资源
sqlSession.close();
}
4 修改
接口方法如下
@Update("update tb_brand set brand_name =#{brandName},company_name=#{companyName}, ordered = #{ordered},description=#{description},status=#{status} where id=#{id}")
int update1(Brand brand);
在测试类中编写修改的方法
@Test//使用注解修改
public void update() throws IOException {
//模拟传递参数
int status=1;
String companyName="菠萝手机";
String brandName="菠萝";
int Ordered=20;
String description="手机中的战斗机";
int id=6;
//封装成对象
Brand brand=new Brand();
brand.setStatus(status);
brand.setCompanyName(companyName);
brand.setBrandName(brandName);
brand.setOrdered(Ordered);
brand.setDescription(description);
brand.setId(id);
//加载mybatis 核心配置文件 获取 SqlSessionFactory 对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2获取sqlsession对象执行sql
SqlSession sqlSession = sqlSessionFactory.openSession(true);
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
int update = mapper.update1(brand);
System.out.println("受影响的行数是"+update);
//提交事务 可以在 SqlSession对象中打开自动提交事务开关(true)
//sqlSession.commit();?
List<Brand> brands = mapper.selectAll();
System.out.println(brands);
sqlSession.close();
}
5删除
接口方法如下
@Delete("delete from tb_brand where id=#{id}")
int Delete1(int id);
在测试类中编写修改的方法
@Test//使用注解删除
public void delect1() throws IOException {
//模拟传递参数
int id=6;
//加载mybatis 核心配置文件 获取 SqlSessionFactory 对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2获取sqlsession对象执行sql
SqlSession sqlSession = sqlSessionFactory.openSession(true);
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
int update = mapper.Delete1(id);
System.out.println("受影响的行数是"+update);
//提交事务 可以在 SqlSession对象中打开自动提交事务开关(true)
//sqlSession.commit();?
List<Brand> brands = mapper.selectAll();
System.out.println(brands);
sqlSession.close();
}