美文网首页
编程改变世界(6)-- mybatis入门学习

编程改变世界(6)-- mybatis入门学习

作者: 天空之小程 | 来源:发表于2019-03-23 12:52 被阅读0次

    mybatis是一个ORM(Object Relational Mapping)框架,即对象关系映射框架。

    简单来说,就是将数据库中的表对应成java程序中的bean实体类,数据库中的字段对应实体类中的属性

    那么如何创建一个最基本的mybatis项目呢,这次我们使用idea集成开发工具,首先先建立一个maven工程,在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>com.miracle</groupId>
        <artifactId>t</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.12</version>
            </dependency>
        </dependencies>
    
    </project>
    

    然后呢,mybatis需要一个核心配置文件,名字可以任意起,我将它命名为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>
        <properties resource="jdbcConfig.properties"></properties>
        <typeAliases>
            <typeAlias type="com.pojo.Teacher" alias="Teacher"/>
        </typeAliases>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driverClassName}"/>
                    <property name="url" value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="mapper/teacherMapper.xml"/>
        </mappers>
    </configuration>
    

    jdbc.properties 数据库的配置如下

    jdbc.driverClassName=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/studb?serverTimezone=UTC&useSSL=false
    jdbc.username=root
    jdbc.password=root
    

    我们需要在resource下建立一个mapper文件(teacherMapper),因为java中的属性和数据库中的字段不同,所以返回值为resultMap

    <?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="mapper.teacherMapper">
        <select id="findTeacher" resultMap="teacherMap">
            select * from tb_teacher
        </select>
        
        <resultMap id="teacherMap" type="Teacher">
            <id property="id" column="id"/>
            <result property="name" column="t_name"/>
            <result property="role" column="role"/>
        </resultMap>
    </mapper>
    

    然后还需要一个pojo的teacher实体类

    package com.pojo;
    
    public class Teacher {
    
        private int id;
        private String name;
        private String role;
    
        public Teacher() {
        }
    
        public Teacher(int id, String name, String role) {
            this.id = id;
            this.name = name;
            this.role = role;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getRole() {
            return role;
        }
    
        public void setRole(String role) {
            this.role = role;
        }
    
        @Override
        public String toString() {
            return "Teacher [id=" + id + ", name=" + name + ", role=" + role + "]";
        }
        
        
    }
    

    数据库的表如下


    image.png

    下一步,我们需要一个工具类,MybatisUtil,主要的功能就是获取到SqlSession

    package com.util;
    
    import com.pojo.Classes;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class MyBatisUtil {
    
        public static  SqlSession getSqlSession(){
            String resource = "mybatis.xml";
            InputStream is = null;
            try {
                is  = Resources.getResourceAsStream(resource);
            } catch (
                    IOException e) {
                e.printStackTrace();
            }
    
            SqlSession sqlSession = new SqlSessionFactoryBuilder().build(is).openSession(true);
            return sqlSession;
        }
    }
    
    

    下一步我们就可以写Dao类了,命名为teacherDao

    package com.dao;
    
    import com.pojo.Teacher;
    import com.util.MyBatisUtil;
    import org.apache.ibatis.session.SqlSession;
    
    import java.util.List;
    
    public class TeacherDao {
        private SqlSession sqlSession = MyBatisUtil.getSqlSession();
        private String sql = "mapper.teacherMapper.";
        public List<Teacher> findTeacher(){
            sql +="findTeacher";
            List<Teacher> list = sqlSession.selectList(sql);
            return list;
        }
    }
    

    最后我们来测试一下结果

    package com.test;
    
    
    import com.dao.TeacherDao;
    import com.pojo.Teacher;
    
    
    import java.util.List;
    
    public class Test {
    
        public static void main(String[] args) {
    
            TeacherDao teacherDao = new TeacherDao();
            List<Teacher> list = teacherDao.findTeacher();
            for (Teacher teacher : list) {
                System.out.println(teacher);
            }
    
    
        }
    }
    

    结果如下图所示


    image.png

    相关文章

      网友评论

          本文标题:编程改变世界(6)-- mybatis入门学习

          本文链接:https://www.haomeiwen.com/subject/yrdlvqtx.html