• Mybatis的使用


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

    一 .mybatis jar包的导入

         【mybatis】

             mybatis-3.1.1.jar

      【MYSQL驱动包】
        mysql-connector-java-5.1.7-bin.jar

    二.准备一个数据表  users

    1 create database mybatis;
    2 use mybatis;
    3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
    4 INSERT INTO users(NAME, age) VALUES('张三', 27);
    5 INSERT INTO users(NAME, age) VALUES('李四', 30);

    三.创建一个conf.xml文件

    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>

        <environments default="development">

            <environment id="development">

                <transactionManager type="JDBC" />

                <!-- 配置数据库连接信息 -->

                <dataSource type="POOLED">

                    <property name="driver" value="com.mysql.jdbc.Driver" />

                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

                    <property name="username" value="root" />

                    <property name="password" value="123456" />

                </dataSource>

            </environment>

        </environments>

        

        <mappers>

            <!-- 注册userMapper.xml文件, 

             userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->

             <mapper resource="userMapper.xml"/>

         </mappers>

        

    </configuration>

    四.定义一个实体类 User ,实体类的属性和表的字段名称一一对应
    省略。

    五.创建sql映射文件。
    创建一个mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件。

    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的

    例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)

     -->

    <mapper namespace="me.gacl.mapping.userMapper">

        <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复

        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型

        resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回

        User类就是users表所对应的实体类

        -->

        <!-- 

            根据id查询得到一个user对象

         -->

        <select id="getUser" parameterType="int" 

            resultType="com.menchao.mybatis.User">

            select * from users where id=#{id}

        </select>

    </mapper>

     

    六.在conf.xml文件中注册userMapper.xml文件

       <mappers>

            <!-- 注册userMapper.xml文件, 

             userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml  如果没有就不需要-->

             <mapper resource="userMapper.xml"/>

         </mappers>

     

    七.代码执行,获取数据库

    public static void main(String[] args) throws IOException {

    String resource = "conf.xml";

     System.out.println(TestMyBatis.class.getResource("conf.xml"));

            System.out.println(TestMyBatis.class.getResource("/"));

     

            System.out.println(TestMyBatis.class.getClassLoader());

              

            

            //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

            java.io.InputStream is = (java.io.InputStream) TestMyBatis.class.getResourceAsStream("conf.xml");

            

            SqlSessionFactory sessionFactory = null;

            sessionFactory = new SqlSessionFactoryBuilder().build(is);

          

            //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)

            //Reader reader = Resources.getResourceAsReader(resource); 

            //构建sqlSession的工厂

            //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

            //创建能执行映射文件中sql的sqlSession

            SqlSession session = sessionFactory.openSession();

            /**

             * 映射sql的标识字符串,

             * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,

             * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL  

             */

            String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串

            //执行查询返回一个唯一user对象的sql

            User user = session.selectOne(statement, 1);

            System.out.println(user);

     

    }

     

    输出结果  

    User [id=1, name=zhang, age=20]

     

  • 相关阅读:
    命令行颜色换算器(基于python)
    VPS常用操作(自用)
    自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)
    nginx最基本操作
    一个平庸程序员的自白
    unity 2d游戏 按y坐标排序子对象
    开源输入法推荐
    unity插件,从一段文字中提取中文并去重
    考试总结(CE???)
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/menchao/p/6007994.html
Copyright © 2020-2023  润新知