(1)创建mysql数据库和表
上一篇文章写了,点击此处:mysql数据库的创建
(2)创建项目/工程(方法2:课堂上老师讲的)
1.打开idea,File —> New —> Project... —> Maven —> 接下来如下
2.选择 File --> New Projects Settings --> Settings for New Projects
3.找到 maven 配置,将 maven 的安装地址及配置好的 setting 文件地址输入
4.选择 File --> Project Structure --> Project,选择对应的 jdk 版本号\
5.选择 File --> Project Structure --> Modules,选择对应的 jdk 版本号
(3)在 pom.xml 中引⼊依赖(mybatis依赖 + mysql驱动依赖,前提是已导入mybatis jar包和mysql-connector-java jar包,这步已完成了)
1.可以在Maven中搜索各个版本的依赖——>https://mvnrepository.com/
每当在新的 Maven 项目中添加相同的依赖项时,Maven 会首先检查本地仓库是否已经存在相应的 Jar 包。如果已经存在,Maven 将重复使用本地存储的 Jar 包,而不会重新下载。如果不存在,Maven 会自动下载并导入所需的 Jar 包到本地 Maven 仓库,如下localRepository目录是自定义的本地仓库:
D:\maven\localRepository\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar D:\maven\localRepository\mysql\mysql-connector-java\8.0.28\mysql-connector-java-8.0.28.jar
<!--mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!--mysql驱动依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>
2.加载Maven依赖,未存在相关依赖加载后将会依赖下载到本地 Maven 仓库,已存在相关依赖加载后将会刷新
<build> <!--配置文件扫描,扫描到xml文件,不用改,直接复制到pom.xml的build标签中去--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
(4)创建实体类Student。实体类名推荐和表名一致,容易记忆
要求如下:
1.新建 entity包并根据数据库字段名创建一个实体类
2.生成 set() 和 get() 方法
3.生成 toString() 方法;
Student.java package com.bjpowernode.entity; //实体类名推荐和表名一致,容易记忆 public class Student { //定义属性,要求属性名和列名一致 private Integer id; private String name; private String email; private Integer age; //快速生成Getter和Setter方法,Generate——>Getter and Setter,全选:点击第一个,按住Shift+最后一个 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } //重写,快速生成toString:Generate——>toString(),全选 @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", email='" + email + '\'' + ", age=" + age + '}'; } }
(5)写操作实体类数据的dao接口
要求如下:
1.新建 mapper 包/dao包并创建接口类,如:StudentMapper.java/StudentDao.java
2.写出对数据库单表的增删改查操作。(增加学生、删除学生、查询所有学生、根据用户 id 查询学生、修改学生邮箱)
(6)创建SQL映射文件(如,StudentDao.xml作用:执行sql语句)
SQL映射文件写sql语句的,mybatis会执行这些sql,放在接口文件同级,课堂讲的是放在resources\com\wlz\mapper下。该文件(abc.xml)与接口(abc.java)同名
mybatis官网有XML 映射语句的示例,链接:https://mybatis.org/mybatis-3/zh/index.html
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.mybatis.example.BlogMapper"> <select id="selectBlog" resultType="Blog"> select * from Blog where id = #{id} </select> </mapper>
a.指定约束文件
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
其中mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的。
b.约束文件的作用:限制、检查在当前文件中出现的标签,属性必须符合mybatis的要求。
c.mapper 是当前文件的根标签,必须的。 namespace:叫做命名空间,唯一值的,可以是自定义的字符串。要求你使用dao接口的全限定名称。
d.在当前文件中,可以使用特定的标签,表示数据库的特定操作。 <select>:表示执行查询 <update>:表示执行更新 <insert>:表示执行插入
e. id:执行的sql语句的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句,可以自定义,但必须是使用的接口文件的方法名称。resultType:表示结果类型,是sql语句执行后得到resultSet,遍历这个resultSet得到java对象的类型。
StudentDao.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.bjpowernode.dao.StudentDao"> <select id="selectStudents" resultType="com.bjpowernode.entity.Student"> select id,name,email,age from student order by id </select> </mapper>
(7)创建全局配置文件(如,mybatis.xml 作用:连接数据库)
全局配置文件是mybatis主配置文件,放在resources的目录下
要求如下:
1.在 resources 文件夹下创建配置文件,如:mybatis-config.xml
2.添加别名设置
3.添加数据库连接设置
4.添加 sql 映射文件设置
5.配置日志设置
mybatis.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--环境配置,数据库的连接信息 default:必须和某个environment的id值一样 告诉mybatis使用哪个数据库的连接信息。也就是访问哪个数据库 --> <environments default="wlz"> <!--environments(环境):一个数据库信息配置, id:一个唯一值,自定义表示环境的名称 --> <environment id="wlz"> <!--transactionManager:mybatis的事务类型 type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理) --> <transactionManager type="JDBC"/> <!--dataSource:表示数据源,连接数据库的 type:表示数据源的类型,POOLED表示使用连接池 --> <dataSource type="POOLED"> <!--driver,url,username,password是固定的,不能自定义--> <!--driver:数据库的驱动类名--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <!--连接数据库的url字符串--> <property name="url" value="jdbc:mysql://localhost:3306/ssm"/> <!--访问数据库的用户名--> <property name="username" value="root"/> <!--密码--> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--sql mapper(即sql映射文件)的位置--> <mappers> <!--一个mapper标签指定一个文件的位置 从类路径开始的路径信息,target/classes(类路径)==>反正2个.xml文件必须同级 --> <mapper resource="com/bjpowernode/dao/StudentDao.xml"/> </mappers> </configuration> <!-- mybatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置 1.约束文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> mybatis-3-config.dtd约束文件名称 2.configuration:根标签-->
(7)编写执行代码
AppTest.java package com.bjpowernode; import com.bjpowernode.entity.Student; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; import java.util.List; public class AppTest { //SqlSessionFactoryBuilder(类)——>构建SqlSessionFactory对象——>创建SqlSession对象——>执行SQL操作 //访问mybatis,读取student数据 public static void main(String[] args) throws IOException { //1.定义mybatis主配置文件的名称,从类路径的根开始(target/classes) String config="mybatis.xml"; //2.读取这个config表示的文件 InputStream in= Resources.getResourceAsStream(config); //3.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 4. 创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(in); // 5. 创建SqlSession对象 SqlSession sqlSession = factory.openSession(); // 6.【重要】指定要执行的sql语句的标识。sql映射文件中的namespace + "." + 标签的id值(作用:找到并执行指定的sql语句) //String sqlid = "com.bjpowernode.entity.StudentDao" + "." + "selectStudents"; String sqlid = "com.bjpowernode.entity.StudentDao.selectStudents"; // 7.【重要】执行sql语句,通过sqlid找到sql语句 List<Student> studentList = sqlSession.selectList(sqlid); //8.输出结果 //studentList.forEach(stu -> System.out.println(stu)); for (Student stu : studentList) { System.out.println("查询的学生="+stu); } //9.关闭SqlSession对象 sqlSession.close(); } }
拓展:target文件中的.xml文件缺少的解决办法,前提是pom.xml中有这个build标签的配置,下面4种方法任选其一,一个个试
<build> <!--配置文件扫描,扫描到xml文件,不用改,直接复制到pom.xml的build标签中去--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
1.点击右侧边上的Maven—>点击自己命名为wlz01_helloMybatis的Maven Modules—>Lifecycle—>clean—>compiler—>运行
2.点击上边栏中的Build—>Rebuild Progect—>运行
3.点击File—>Invalidate Caches—>Invalidate and Restart—>运行
4.直接把自己配置的.xml文件复制粘贴到对应的target文件夹下