1.创建maven模块
2.在pom.xml中配置需要的jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>MyBatisHomeWork</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- 测试jar包 用来使用@Test注解 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- mysql数据库jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- mybatis的jar包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
</project>
有需要的jar包不知道如何配置 去maven官网搜索即可
3.构建mybatis项目的基本环境
在mysql中创建商品表
-- 删除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);
SELECT * FROM tb_brand;
创建Mybatis的核心配置文件 sqlMapConfig.xml
配置文件需要放在resources文件夹下
这次使用的Mapper接口代理的方式实现
需要在底层创建Mapper接口,接口名需要和映射文件名一致 且目录一致
在pojo包下创建实体类
4.编写核心配置文件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>
<!-- 开启驼峰命名法
在mysql的表中我们通常用下划线分割列名的两个单词
java中通常使用驼峰命名法
开启之后会自动识别
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 给com.heima.pojo下的类起别名 直接使用类名调用即可 不区分大小写 -->
<typeAliases>
<package name="com.heima.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- jdbc的基本信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<!-- sql映射文件信息 -->
<mappers>
<!--填写sql映射配置文件的目录文件的目录 会自动加载该包下的所有映射文件 -->
<package name="com.heima.mapper"/>
</mappers>
</configuration>
5.在BrandMapper接口中编写 业务需要的增删改查方法
package com.heima.mapper;
import com.heima.pojo.Brand;
import java.util.List;
public interface BrandMapper {
//查询
List<Brand> selectAll();
//根据id查询
Brand selectById(int id);
//添加数据
int insert(Brand brand);
//删除数据
int delectById(int id);
//更改数据
int updataBrand(Brand brand);
}
6.编写sql映射文件
<?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">
<--
namespace的值为对应接口的全类名
-->
<mapper namespace="com.heima.mapper.BrandMapper">
<--
每条sql标签的id 应该与接口中对应的方法名一直
resultType 的值为sql语句返回的数据类型
在核心配置文件中设置了pojo包下类的别名 所以直接用类名调用即可
-->
<select id="selectAll" resultType="Brand">
select * from tb_brand
</select>
<select id="selectById" resultType="Brand">
select * from tb_brand where id=#{id}
</select>
<insert id="insert" >
insert into tb_brand value (#{id},#{brandName},#{companyName},#{ordered},#{description},#{status})
</insert>
<delete id="delectById">
delete from tb_brand where id=#{id}
</delete>
<update id="updataBrand">
update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id}
</update>
</mapper>
7.编写测试类
以查询方法为例
@Test
public void selectAll() {
//类加载器加载核心配置文件
InputStream in= TestMybatis.class.getClassLoader().getResourceAsStream("sqlMapConfig.xml");
//解析核心配置文件
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
//创建sqlSession对象 其底层还是 Connection
SqlSession sqlSession=factory.openSession();
//使用接口代理的方式处理sql
BrandMapper mapper=sqlSession.getMapper(BrandMapper.class);
//查询数据不许用参数 如果有参数传入即可 mybatis会自动在sql中复制
List<Brand>list=mapper.selectAll();
for (Brand brand : list) {
System.out.println(brand);
}
sqlSession.close();
}
SqlSessionFactory 会自动开启事务
如果是增删改的操作需要提交事务
调用sqlSession.comit()即可