zoukankan      html  css  js  c++  java
  • 【一】MyBatis入门案例

    1. MyBatis的简介

          MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

    2. 入门案例

          (1). 新建一个 Java 工程,其目录结构如下:

    image

    (2). 依次介绍目录结构下的文件

          (a). MyBatis 的配置文件 mybatis-config.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="config.properties">
        </properties>
        
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}" />
                    <property name="url" value="${url}" />
                    <property name="username" value="${username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
        </environments>
        
        <!-- 注册userMapper.xml文件  -->
        <mappers>
            <mapper resource="bean/userMapper.xml" />
        </mappers>
    </configuration>

           (a).config.properties 文件保存了连接数据库的基本信息,如果该文件存放在其他目录下,应该在 mybatis-config.xml 文件中明确的指出来。例如:<properties resource="org/mybatis/example/config.properties"></properties>

    image

          (4). 定义表所对应的实体类

    package bean;
    
    public class User {
        private int id;
        private String name;
        private int age;
    
        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 int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
    }
               (c). 定义数据库表对应的 SQL 映射文件 userMapper.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"> 
    
    <!-- namespace:SQL映射文件所在的路路径 -->
    <mapper namespace="bean.userMapper">
        <!-- parameterType:参数id的值的类型
             resultType:查询的结果返回的类型
         --> 
        <select id="getUser" parameterType="int" 
            resultType="bean.User">
            select * from users where id=#{id}
        </select>
    </mapper>

          (d). 编写测试代码

    package test;
    
    import java.io.IOException;
    import java.io.InputStream;
    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 bean.User;
    
    public class TestMyBatis {
        
        public static void main(String[] args) throws IOException {
            //1.加载mybatis的配置文件
             String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
    
            //2.创建会话工厂,注意:mybatis3.0中不支持build(InputStream inputStream)方法
             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            //3.从会话工厂中得到会话sqlSession
            SqlSession session = sqlSessionFactory.openSession();
            
            //4.通过会话session操作数据库
             String statement = "bean.userMapper.getUser";
            User user = session.selectOne(statement, 1);
            System.out.println(user);
        }
    }
  • 相关阅读:
    tensorboard页面显示No dashboards are active for current data set 问题win10系统
    tensorboard在cmd运行成功但在浏览器中不能正常显示的问题解决
    使用tensorflow设计的网络模型看不到数据流向怎么办
    pycharm中某些方法被标黄的原因及解决办法
    np.newaxis()用法
    决策树模型、本质、连续值完整篇
    决策树模型、本质、连续值
    vsftp 用无法登陆的用户名登陆(也叫虚拟用户)并进入到自己的文件夹test
    vsftp 使用匿名帐号登陆
    CentOS 5/6.X 使用 EPEL YUM源
  • 原文地址:https://www.cnblogs.com/shi-blog/p/4138389.html
Copyright © 2011-2022 走看看