项目结构:
1.新建maven项目
File-New-Project-Maven-Next-输入项目名-Finsh
2. 连接数据库
- View-Tools Windows-Database
- Database-±Data Source-选择要连接的数据库
3.导入相关依赖(API)–pom.xml
- MySQL驱动
- log4j–控制日志信息输送到控制器等
- junit–单元测试框架,进行代码测试
- 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">
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>com.att.inno</groupId>
<artifactId>log4j</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
</project>
4.配置log4j–方便查看控制台输出sql语句
- 在reources目录下新建log4j.properties文件
输入:
# 全局配置
log4j.rootLogger=ERROR,stdout
# MyBatis日志配置
log4j.logger.com.lifeng=DEBUG
# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
未配置log4j.properties,会报出以下错误:
5.创建实体类Student
5.1什么是实体类
- 一般的实体类对应一个数据表,其中的属性对应数据表中的字段
- 实体类就是把对某一个表的操作全写在一个类中.
5.2编写实体类注意
- 实体类的名字尽量和数据库的表的名字对应相同。
- 实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。
- 实体类应该有个无参的构造方法。
- 实体类应该有个有参(所有的参数)的构造方法。
5.3创建实体类Student
- 创建目录:src-main-java-com.hbfu.entity-Student
package com.hbfu.entity;
public class Student {
private int id;
private String studentsname;
private String gender;
private int age;
public String toString(){
return "Student{"+"id="+id+
",studentname="+studentsname+
",gwnder="+gender+
",age="+age+
"}";
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setStudentsname(String studentsname) {
this.studentsname = studentsname;
}
public String getStudentsname() {
return studentsname;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
6.新建Dao层
6.1什么是Dao层
- Dao(Data Access Object):数据访问接口,对数据库进行操作,夹在业务逻辑层和数据库资源中间
- Dao层一般有接口和接口的实现类:
- 接口通常用来定义实现类的外观即实现类的行为定义,用来约束实现类的行为。接口相当于一份契约,根据外部应用需要的功能,约定了实现类因该要实现的功能。通过使用接口,可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系,接口就是实现类对外的外观。
- 实现类一般用于操作数据库:实现类是针对接口来讲的,来实现接口中约定的内容
6.2创建StudentDao接口
- 创建目录:src-main-java-com.hfbu.dao-StudentDao
代码:
package com.hbfu.dao;
public interface StudentDao {
public List<Student> findAllStudent();
}
7.创建映射StudentMapper.xml文件
- 通过.xml将数据库增删改查操作使用标签化的语言来写
- 映射文件主要实现sql语句与Java对象之间的映射,使sql语句查询出来的关系型数据能封装成Java对象
- 创建目录:src-main-resources-mapper-StudentMapper.xml或src-main-java-com.hbfu.dao-StudentMapper.xml
创建方式:File-Settings-Editor-File and Code Templates-Files-±……
代码:
<?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.hbfu.dao.StudentDao">
<select id="findall" resultType="com.hbfu.entity.Student">
select * from student
</select>
</mapper>
代码解析:
- 映射文件的约束信息
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- 一级标签及其属性
- 中包含多个标签对数据库进行操作
- 属性-namespace:用于标识映射文件,通常设置为对应接口的全路径名称
- 查询标签
<select>
</select>
- 属性:id–命名空间中唯一标识符,可以被引用,其值一般设置成与接口中对应的方法名称;
resultType=“com.hbfu.entity.Student”–sql语句查询结果映射为Student对象类型
- sql语句–查询-查询student表中所有信息
select * from student
8.创建mybatis-config.xml作为主配置文件
- 主配置文件主要用于配置:项目的环境,数据库连接相关配置等
- 通常命名为:mybatis-config.xml
- 创建目录:src-main-resources或src
创建方式同上面映射文件的创建方式一样
代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/studentdb?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="hanyanshuo"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/StudentMapper.xml"></mapper>
</mappers>
</configuration>
9.创建Dao层接口实现类StudentDaoImpl
- 创建目录:src-main-java-com.hfbu.dao-StudentDaoImpl
代码:
package com.hbfu.dao;
public class StudentDaoImpl implements StudentDao{
@Override
public List<Student> findAllStudent() {
SqlSession session = null;
List<Student> studentList=new ArrayList<Student>();
try {
String resource= "mybatis-config.xml";
Reader reader= Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory= builder.build(reader);
session = factory.openSession();
studentList=session.selectList("com.hbfu.dao.StudentDao.findall");
}catch (Exception e){
e.printStackTrace();
}
return studentList;
}
}
- selectList()是SqlSession类的方法,用于查询记录集合
10.创建测试类StudentTest
- 创建目录:src-test-java-StudentTest.java
代码:
public class StudentTest {
@Test
public void test(){
StudentDao studentDao=new StudentDaoImpl();
System.out.println(studentDao.findAllStudent());
}
}
运行结果:
|