MyBatis基础操作流程


MyBatis 是一款优秀的半自动的轻量级的持久层框架。
项目源码

创建Maven项目

pom.xml 导入相关依赖

  • org.mybatis -> mybatis
  • mysql-connection-java -> mysql
  • org.projectlombok -> lombok
  • log4j -> log4j
<?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>MyBatis</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

</project>
  • 配置 mapper 读取位置 ,解决Mapper配置文件读取不到的关键
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

resources/config.xml

通过 config.xml 进行数据库的配置和相关Mapper的导入。

  • 约束
<?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配置 -->
    	<!-- 连接配置 -->
    	<!-- 注册Mapper -->
    </configuration>
  • SQL 的相关配置
<settings>
	<!-- 打印SQL语句 -->
	<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
  • 连接配置
<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
            <property name="url" value="jdbc:mysql://localhost:3306/JavaWeb?userSSL=false&amp;allowPublicKeyRetrieval=true"/>
        </dataSource>
    </environment>
</environments>
  • 注册Mapper
<mappers>
   <!-- 注解形式注册 -->
   <mapper class="com.kawyang.repository.IClass" />
   <!-- 配置文件方式注册 -->
   <mapper resource="com/kawyang/mapper/IClassesMapper.xml" />
   <mapper resource="com/kawyang/mapper/IStudentMapper.xml" />
</mappers>

entity

创建实体类对象。

lombok 会通过以下注解快速🔜完成设置
@Data : 自动添加 Get/Set 方法。
@AllArgsConstructor : 有参构造
@NoArgsConstructor : 无参构造

  • 配置文件形式
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Classes {
    private int id;
    private String name;
}

reposotory

编写数据库操作接口

  • 配置文件形式

    通过配置文件形式,需要编写相应的 Mapper 配置文件,将接口中的方法与 数据库的操作进行映射。
    并且在 config.xml 中对配置文件 通过 mapper 🏷️的 resource 属性,完成注册。

public interface IClasses {

    Classes findById(int id);

    List<Classes> findAll();

    int insertClass(Classes classes);

    int deleteById(int id);

    int updateClass(Classes classes);

    ClassesStudents findClassAndStudentById(int id);

    List<ClassesStudents> findAllClassAndStudent();
}
  • 注解形式

通过一下注解,编写相应的SQL语句,完成接口方法与数据库操作的映射,不需要配置文件,在 config.xml 中,使用 mapper🏷️ 的 class 属性完成注册。

  • @Insert(String sql) : 增
  • @Delete(String sql) : 删
  • @Update(String sql) : 改
  • @Select(String sql) : 查
public interface IClasses {

	@Select("select * from classes where id=#{id}")
    Classes findById(int id);

    @Select("select * from classes")
    List<Classes> findAll();

    @Insert("insert into classes (id,name) values (#{id},#{name})")
    int insertClass(Classes classes);

    @Delete("delete from classes where id=#{id}")
    int deleteById(int id);

    @Update("update from classes set name=#{name} where id=#{id}")
    int updateClass(Classes classes);
}

mapper

com.mapper.IClassesMapper

编写数据库操作的Mapper文件,完成方法与查询语句的映射。

<?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>
	<select >..</select>
	<delete >..</delete>
	<update >..</update>
	<insert >..</insert>
</mapper>

Mapper🏷️ 通过属性 namespace : 数据库操作接口的全路径
数据库操作🏷️ :

  • select

    • id : 映射接口的方法名
    • parameterType : 方法参数的类型
    • resultType : 返回值类型的全路径
  • delete

    • id : 映射接口的方法名
    • parameterType : 方法参数的类型
    • 无返回值属性,返回值为 int 类型
  • update

    • id : 映射接口的方法名
    • parameterType : 方法参数的类型
    • 无返回值属性,返回值为 int 类型
  • insert

    • id : 映射接口的方法名
    • parameterType : 方法参数的类型
  • resultMap:

通过 resultMap 进行含有内嵌对象类的配置。

如:StudentClas 类,除了包含student的基本信息外,含有内嵌对象 classes,需要通过 resultMap 来完成数据的配置。

<resultMap id="StudentCla" type="com.kawyang.entity.StudentCla" >
    <id property="id" column="sid"/>
    <result property="name" column="sname" />
    <collection property="students" ofType="com.kawyang.model.Classes">
        <id property="id" column="cid"/>
        <result property="name" column="cname" />
    </collection>
</resultMap>

<select id="selectStudentClaById" resultMap="StudentCla" parameterType="ind">
	select s.id as sid, s.name as sname, c.id as cid, c.name as cname
	from student s,classes c 
	where s.cid=c.id and s.id=#{id}
</select> 
  • resultMap🏷️ :
    • id -> resultMap 的 id
    • type -> 实体类类型
  • id 和 result🏷️ :
    • property -> 类的属性名称
    • column -> 查询结果的列名
  • collection🏷️:完成对象注入
    • property -> 类的注入对象的名称
    • ofType -> 注入对象的类型

Main

  1. 读取配置文件
  2. 创建SQLSession对象
  3. 使用SQLSession对象,创建 相应操作的 mapper 对象
  4. 使用 mapper 对象完成 数据库的操作
public class Main{
	public static void main(String[] args) {
		// 1. 读取配置文件
		InputStream in = Main.class.getClassLoader().getResourceAsStream("config.xml");
		// 2. 创建SQLSession对象
		// 2.1 创建 SqlSession 工厂🏭类
		SqlSessionFactoryBuilder bulider = new SqlSessionFactoryBuilder();
		// 2.2 使用配置文件 完成🏭创建
		SqlSessionFactory bulid = bulider.build(in);
		// 2.3 使用🏭创建 SqlSession
		SqlSession session = build.openSession();
		// 3. 使用SQLSession对象,创建 相应操作的 mapper 对象
		IStudentCla mapper = session.getMapper(IStudentCla.class);
		// 4. 使用 mapper 对象完成 数据库的操作
		StudentCla student = mapper.findById(2);

		// 5. 关闭 SqlSession
		session.close();
		
	}
}
展开阅读全文

Python数据分析与挖掘

01-08
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值