mybatis的实现步骤

第一个mybatis的例子
实现步骤
1. 新建student表
2. 加mybatis坐标,mysql驱动坐标
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5   <modelVersion>4.0.0</modelVersion>
 6 
 7   <groupId>com.bjpowernode</groupId>
 8   <artifactId>mybatis-demo</artifactId>
 9   <version>1.0-SNAPSHOT</version>
10   <packaging>jar</packaging>
11 
12   <properties>
13     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
14     <maven.compiler.source>1.8</maven.compiler.source>
15     <maven.compiler.target>1.8</maven.compiler.target>
16   </properties>
17 
18   <dependencies>
19     <dependency>
20       <groupId>junit</groupId>
21       <artifactId>junit</artifactId>
22       <version>4.11</version>
23       <scope>test</scope>
24     </dependency>
25 
26     <!--添加mybatis依赖-->
27     <dependency>
28       <groupId>org.mybatis</groupId>
29       <artifactId>mybatis</artifactId>
30       <version>3.5.1</version>
31     </dependency>
32     <!--添加mysql驱动-->
33     <dependency>
34       <groupId>mysql</groupId>
35       <artifactId>mysql-connector-java</artifactId>
36       <version>5.1.9</version>
37     </dependency>
38   </dependencies>
39 
40   <build>
41     <!--添加插件,将java下的非java文件也编译到指定文件下-->
42     <resources>
43       <resource>
44         <directory>src/main/java</directory><!--所在的目录-->
45         <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
46           <include>**/*.properties</include>
47           <include>**/*.xml</include>
48         </includes>
49         <filtering>false</filtering>
50       </resource>
51       <!--https://www.cnblogs.com/liuxm2017/p/10688789.html
52       默认情况下,如果没有指定resources,目前认为自动会将src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。
53 如果设定了resources,那么默认的就会失效,因此需要设置指定resources文件夹。
54       -->
55       <resource>
56         <directory>src/main/resources</directory>
57       </resource>
58     </resources>
59   </build>
60 </project>
View Code

 


3. 创建实体类Student,用来保存表中的一行数据。
 1 package com.bjpowernode.domain;
 2 /*推荐和表名一致,方便记忆*/
 3 /*3. 创建实体类Student,用来保存表中的一行数据。*/
 4 public class Student {
 5     /*定义属性名,要求和数据库的列名保持一致*/
 6     private Integer id;
 7     private String name;
 8     private String email;
 9     private Integer age;
10 
11     public Integer getId() {
12         return id;
13     }
14 
15     public void setId(Integer id) {
16         this.id = id;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public String getEmail() {
28         return email;
29     }
30 
31     public void setEmail(String email) {
32         this.email = email;
33     }
34 
35     public Integer getAge() {
36         return age;
37     }
38 
39     public void setAge(Integer age) {
40         this.age = age;
41     }
42 
43     @Override
44     public String toString() {
45         return "Student{" +
46                 "id=" + id +
47                 ", name='" + name + '\'' +
48                 ", email='" + email + '\'' +
49                 ", age=" + age +
50                 '}';
51     }
52 }
View Code
4. 创建持久层dao接口,定义操作数据库的方法
 1 package com.bjpowernode.dao;
 2 
 3 import com.bjpowernode.domain.Student;
 4 
 5 import java.util.List;
 6 
 7 /*接口操作student表*/
 8 //4. 创建持久层dao接口,定义操作数据库的方法
 9 public interface StudentDao {
10     //查询student表的所有数据,返回的是一个集合,里面存放了student对象
11     //selectStudents对应的是一个sql的执行
12     public List<Student> selectStudents();
13 }
View Code
5. 创建一个mybatis使用的配置文件
叫做sql映射文件:用来写sql语句,一般一个表一个映射文件
这个文件是xml文件

文件在接口所在的目录中
文件名和接口名保持一致

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--5.创建一个mybatis使用的配置文件
 6 叫做sql映射文件:用来写sql语句,mybatis会执行这些sql,一般一个表一个映射文件
 7  这个文件是xml文件
 8 文件在接口所在的目录中
 9 文件名和接口名保持一致-->
10 <!--
11 1. 指定约束文件
12 <!DOCTYPE mapper
13         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
14         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
15  mybatis-3-mapper.dtd:约束文件名称,dtd是扩展名
16 2. 约束文件的作用:限制和检查当前文件中出现的标签,属性必须符合mybatis的要求
17 3. mapper是当前文件的根标签
18    namespace叫做命名空间,唯一值,是自定义的,要求使用dao接口的全限定名称
19 4. 在当前文件中可以使用特定的标签来执行特定的操作
20 <select>:表示执行查询
21 <update>:表示执行查询,里面放的是update语句
22 <insert>:表示插入
23 <delete>:表示删除
24 5. select表示执行的查询操作,
25     id是要执行sql语法的唯一标识,mybatis会使用这个id来找到要执行的sql语句
26     可以自定义,但是要求使用接口中的方法名称
27     resultType表示结果类型的,是sql语句执行的ResultSet,遍历这个结果集得到的java对象的类型
28     我们这里需要把结果集保存成Student对象,所以写的是Student的全限定名称
29 -->
30 <mapper namespace="com.bjpowernode.dao.StudentDao">
31     <select id="selectStudents" resultType="com.bjpowernode.domain.Student">
32     select id,name,email,age from student order by id
33   </select>
34 
35 </mapper>
View Code
6. 创建mybatis主配置文件
一个项目一个主配置文件
主配置文件提供了数据库的链接信息和sql映射文件位置信息
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <!--mybatis-3-config.dtd约束文件信息-->
 6 <configuration>
 7     <!--环境配置信息,可以有多个
 8     default的值必须和environment的其中一个id一致,告诉mybatis使用哪个数据库进行连接
 9     也就是访问哪个数据库
10     -->
11     <environments default="development">
12         <!--一个数据库配置信息
13         id是一个唯一值,自定义的,用来表示环境的名称的
14         -->
15         <environment id="development">
16             <!--用来表示mybatis事务类型的
17             type:JDBC(表示使用jdbc中的connection对象的commit,rollback做事务处理)
18             -->
19             <transactionManager type="JDBC"/>
20             <!--用来表示数据源,用来连接数据库的
21             type表示数据源类型,pooled表示用连接池
22             -->
23             <dataSource type="POOLED">
24                 <!--driver,url,username,password是固定的,不能随便改-->
25                 <property name="driver" value="com.mysql.jdbc.Driver"/>
26                 <property name="url" value="jdbc:mysql://localhost:3306/springdb"/>
27                 <property name="username" value="root"/>
28                 <property name="password" value="123456"/>
29             </dataSource>
30         </environment>
31     </environments>
32     <!--sql映射文件的位置(sql mapper 的位置)-->
33     <!--一个mapper标签指定一个文件的位置,从类路径开始的路径信息
34     类路径:编译后target/classes下面的路径
35     -->
36     <mappers>
37         <mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
38     </mappers>
39 </configuration>
View Code

 


7. 创建使用mybatis类
通过mybatis访问数据库。
 1 package com.bjpowernode;
 2 
 3 import com.bjpowernode.domain.Student;
 4 import org.apache.ibatis.io.Resources;
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.apache.ibatis.session.SqlSessionFactory;
 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 8 
 9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.util.List;
12 
13 public class MyApp {
14     public static void main(String[] args) throws IOException {
15         //访问mybatis读取student数据
16         //1. 定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
17         String config = "mybatis.xml";
18         //2. 读取这个config表示的文件
19         InputStream in = Resources.getResourceAsStream(config);
20         //3.创建sqlSessionFactoryBuilder对象
21         SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
22         //4.创建sqlSessionFactory对象
23         SqlSessionFactory factory = builder.build(in);
24         //5.【重要】获取sqlSession对象,从SqlSessionFactory中获取SqlSession
25         SqlSession sqlSession = factory.openSession();
26         //6. 【重要】指定要执行的sql语句标识,sql映像文件中的namespace+“.”+标签的id值
27         String sqlId ="com.bjpowernode.dao.StudentDao"+"."+"selectStudents";
28         //7. 执行sql语句,通过sqlId找到语句
29         List<Student> studentList = sqlSession.selectList(sqlId);
30         //8. 输出结果
31         for (Student stu:studentList
32              ) {
33             System.out.println(stu);
34         }
35         //关闭sqlSession对象
36         sqlSession.close();
37 
38     }
39 }
View Code

8.执行得出结果:

Student{id=1001, name='李四', email='lisi@qq.com', age=20}
Student{id=1002, name='张三', email='zs@sina.com', age=28}

 
posted @ 2021-02-19 19:39  渐行、渐远  阅读(347)  评论(0)    收藏  举报