标签:mod void 注解 持久层框架 des lse struct 数据 set
MyBatis 是一款优秀的半自动的轻量级的持久层框架。
<?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>
<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&allowPublicKeyRetrieval=true"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注解形式注册 -->
<mapper class="com.kawyang.repository.IClass" />
<!-- 配置文件方式注册 -->
<mapper resource="com/kawyang/mapper/IClassesMapper.xml" />
<mapper resource="com/kawyang/mapper/IStudentMapper.xml" />
</mappers>
创建实体类对象。
lombok 会通过以下注解快速??完成设置
@Data
: 自动添加 Get/Set 方法。
@AllArgsConstructor
: 有参构造
@NoArgsConstructor
: 无参构造
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Classes {
private int id;
private String name;
}
编写数据库操作接口
配置文件形式
通过配置文件形式,需要编写相应的 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
属性完成注册。
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);
}
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
delete
int
类型update
int
类型insert
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>
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();
}
}
标签:mod void 注解 持久层框架 des lse struct 数据 set
原文地址:https://www.cnblogs.com/KawYang/p/13215387.html