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>
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 }
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 }
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>
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>
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 }
8.执行得出结果:
Student{id=1001, name='李四', email='lisi@qq.com', age=20}
Student{id=1002, name='张三', email='zs@sina.com', age=28}

浙公网安备 33010602011771号