mybatis快速入门

    技术2024-04-20  89

    软件开发常用架构

    三层架构包含的三层

    界面层(Spring MVC框架):表示层、视图层,主要功能是接受用户的数据,显示请求的处理结果。业务逻辑层(Spring框架):接收表示传递过来的数据,检查数据,计算业务逻辑,调用数据访问层获取数据。数据访问层(MyBatis框架):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。

    三层的处理请求的交互

    用户—> 界面层—>业务逻辑层—>数据访问层—>DB数据库

    MyBatis框架快速入门

    准备工作及要求

    我的本机mysql环境:springdb数据库内创建一个student表,里面有两组数据,要求用mybatis框架完成sql查询,打印出这两组数据。

    新建一个maven项目

    可以参过以前我写的一个博客:maven配置使用,到3.2即可,后续一些步骤是配tomcat,暂时用不到。

    在src目录下,把默认的main文件夹删除,添加java和resources两个文件夹,并分别将其标记为Sources Boot

    和Resources Boot文件,在java文件夹中创建我们的包,如我的是cn.gs。

    具体配置

    实现步骤: 1.新建的student表 2.加入maven的mybatis坐标,mysql驱动的坐标 3.创建实体类,Student--保存表中的一行数据 4.创建持久层的dao接口,定义操作数据库的方法 5.创建一个mybatis的配置文件 叫做sql映射文件:写sql语句的,一般一个表一个sql文件 这个文件是xml文件,文件名与接口文件名一样 6.创建mybatis的主配置文件 一个项目就是一个配置文件 主配置文件提供了数据库的连接信息和sql映射文件的位置信息 7.创建使用mybatis类 通过mybatis来访问数据库

    mysql中插入学生表,已完成

    maven的pom.xml配置文件中,依赖项中加入mybatis和mysql驱动包,并在编译build里面加入扫描到.xml的配置。pom.xml详细信息如下:

    <?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>cn.gs</groupId> <artifactId>mybatis-blog-test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>mybatis-blog-test Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> <scope>compile</scope> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> </dependencies> <build> <!--配置能编译.xml文件--> <resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes><!--包括目录下的.properties,.xml 文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project> 在cn.gs下创建一个domain包,包下面创建一个Student类 public class Student { private Integer id; private String name; private String email; private Integer age; //再生成它的 toString 和 getter/setter方法 } 在cn.gs下创建一个dao包,包下面创建一个StudentDao接口 public interface StudentDao { //查询student表所有数据 public List<Student> selectStudents(); }

    创建mybatis的配置文件,叫做sql映射文件,文件名与接口文件名一样

    即在dao包下创建StudentDao.xml文件

    <?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="cn.gs.dao.StudentDao"> <select id="selectStudents" resultType="cn.gs.domain.Student"> select id,name,email,age from Student order by id </select> </mapper> <!--namespace: 唯一值,要求你使用dao接口的全限定名称--> <!--select 表示执行查询,也可用其他,如update、delete、insert等--> <!--id: 执行sql的唯一标识,要求你使用接口中定义的方法名称--> <!--resultType:表示返会结果的类型,如我们查询得到的就是Student类,写全限定名称--> 在resources目录下创建mybatis.xml作为主配置文件,里面定义连接的参数、配置等 <?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> <!--环境配置 : 数据库连接信息--> <environments default="mydev"> <!-- id: 一个唯一值,自定义,表示环境名称--> <environment id="mydev"> <!-- transactionManager: mybatis的事物类型 type: JDBC(表示使用jdbc中的Connection对象的commit,rollback做事物处理)--> <transactionManager type="JDBC"/> <!-- dataSource: 表示数据源,连接数据库--> <dataSource type="POOLED"> <!--数据库的驱动类名--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--连接数据库的url字符串--> <property name="url" value="jdbc:mysql://localhost:3306/springdb"/> <!--mysql中我的用户名:root--> <property name="username" value="root"/> <!--root对应的登录密码:root--> <property name="password" value="root"/> </dataSource> </environment> <environment id="online"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/springdb"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--sql映射文件--> <mappers> <mapper resource="cn/gs/dao/StudentDao.xml"/> </mappers> </configuration> 在cn.gs下面创建一个APP类,完成测试 public class App { public static void main( String[] args ) throws IOException { //访问mybatis读取Student数据 //1.定义mybatis主配置文件的名称,从类路径的跟开始(target/classes) String config = "mybatis.xml"; //2.读取这个config文件 InputStream is = Resources.getResourceAsStream(config); //3.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //4.创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(is); //5.【重要】获取SqlSession对象,从SqlSessionFactory中获取 SqlSession sqlSession = factory.openSession(); //6.指定要执行的sql语句的表示,sql映射文件中的namesapce+ "." +标签的id值 String sqlId = "cn.gs.dao.StudentDao" + "." + "selectStudents"; //7.执行sql语句 List<Student> list = sqlSession.selectList(sqlId); list.forEach(stu -> System.out.println(stu)); //8.关闭SqlSession对象 sqlSession.close(); } }
    Processed: 0.080, SQL: 9