• MyBaits学习


    一:配置MyBaits的开发环境

    1.1.核心配置文件

    正如hibernate一样,MyBaits也有一个核心的配置文件,它包含着数据源地址,用户名,密码等,还有着各个实体类的配置文件,配置文件是xml类型的,至于文件名,则可以随意写,我这里取名作conf.xml,本文章中,都以这个名字为核心配置文件的名称,下面我们来写一个User类:

    <?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的devault有两个值,
            一个是development开发模式
            一个是work工作模式,一般开发完成后会改为work模式
         -->
        <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="zxj65681140" />
                </dataSource>
            </environment>
        </environments>
        
        <!-- 这里映射那些实体类的配置文件 -->
        <mappers>
            <!-- 引入使用配置文件的写法 -->
            <mapper resource="zxj/domain/userMapper.xml"/>
            <mapper resource="zxj/crud/userMapper.xml"/>
            <!-- 引入注解的写法 -->
            <mapper class="zxj.annotation.interfac.UserMapper"/>
        </mappers>
    </configuration>

     

    1.2.实体类与实体类的映射文件

    写完核心的配置文件的时候,我们就要准备实体类,也就是一个javabean,同样也是要有着get与set方法,下面我们来写一个简单的bean:

    package zxj.domain;
    
    public class User {
        private int id;
        private String name;
        private int age;
        
        
        
        public User(int id, String name, int age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }
    
        public User() {
            super();
        }
    
        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 + "]";
        }
        
        
    }

    这是一个再简单不过的实体类了,然后再来写它的配置文件,配置文件一船会以类的名字+Mapper.xml,例如userMapper.xml,当然你也可以写其它的,下面给出Mybatis的简单的一个映射关系的写法:

    <?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="zxj.crud.userMapper">
        <!-- crud操作 -->
        <!-- 代表着传递过来的类型 -->
        <!-- #{}中的值不可以乱写,如果parameterType是一个对象,那就必须写这个对象的属性 -->
        <insert id="addUser" parameterType="zxj.domain.User">
            insert into users(name,age) value(#{name},#{age})
        </insert>
        <!-- 删除一条纪录 -->
        <delete id="deleteUser" parameterType="int">
            delete fm users where id=#{id}
        </delete>
        <!-- 更新一条纪录 -->
        <update id="updateUser" parameterType="zxj.domain.User">
            update users set name=#{name},age=#{age} where id=#{id}
        </update>
        
        <!-- 查询所有,指定返回类型为User对象 -->
        <select id="getAllUsers" resultType="zxj.domain.User">
            select * from users
        </select>
    
        <!-- 根据id查询,得到一个User对象 -->
        <select id="getUser" parameterType="int" resultType="zxj.domain.User">
            select * from users where id=#{id}
        </select>
    </mapper>
    
    

    看完上面配置文件的写法,如果懂Hibernate的人就会知道,这和hibernate的配置文件就是有些不同了,因为hibernate是完全的是面向对象的编程,不需要自己写sql,而mybatis需要程序员把sql写好,所以也注定了mybatis要比hibernate要更加灵活。

    下面来介绍一下配置文件

    (1)这里分别有着四个标签,分别对应增删改查,而每个标签又有一个id,这个Id就是操作数据库时需要引用的一个字符串。

    (2)namespace就是这个配置文件的一个名称空间,是为配置文件分类的,就类似于java中的包一样。

    (3)parameterType,参数类型,这个类型可以写一个基本数据类型,也可以写一个对象,比如说要增加一条纪录的时候,肯定是传一个对象过去的,然后在下面的占位符中,就可以写这个对象的属性字段。如果要删除一条纪录,则是是传一个id过去,则可以定义为int。

    (4)resultType返回的结果类型,就是操作完数据库时返回的结果,它有可能是受影响的行数,也可能是查询完的一个对象,也可能是一个多条的list集合,所以也可以定义为基本数据类型或者是一个对象

    1.3.简单的使用mybatis

    写完基本的数据类型后,就需要来测试是否可以正常使用了,下面写一个测试类:

    /**
         * 测试根据id来查找,配置文件的写法
         */
        @Test
        public void testSelect() {
            // 使用类加载器加载Mybaits的配置文件,得到inputstream输入流
            InputStream in = TestMybaits.class.getClassLoader().getResourceAsStream("conf.xml");
            // 创建sessionFactory
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            // 得到session
            SqlSession session = factory.openSession();
            // 这是userMapping的名称空间加上id
            String statement = "zxj.domain.userMapper.getUser";
            // 第二个参数是占位符,代表查找Id为2的数据,返回user对象
            User user = session.selectOne(statement, 1);
            System.out.println(user);
            session.close();
        }

    如上的代码如示,先是根据inputStream流来加载配置文件,然后后面的就是创建工厂,然后创建session,然后用session操作数据库,然后关闭session。

  • 相关阅读:
    spring cloud项目搭建
    获取iframe的window对象
    数学杂谈 #7
    [AGC023D] Go Home
    JOISC 2021 部分题解
    [NOI2017]泳池
    [NOI2016] 循环之美
    [NOI2016] 优秀的拆分
    [LG P3676]小清新数据结构题
    [ARC113F]Social Distance
  • 原文地址:https://www.cnblogs.com/zhuxiaojie/p/4656330.html
Copyright © 2020-2023  润新知