MyBatis入门教程(基于Mybatis3.2)

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

MyBatis和Hibernate一样都是基于ORM的关系型数据库框架

ORM工具的基本思想:

1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session。

5.在java对象和数据库之间有做mapping的配置文件,也通常是xml文件。

MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。

本文就一个demo的形式,讲诉MyBatis的数据库操作过程,新建一个web项目,项目结构如图:

我们需要准备mybatis3.2.jar和mysql的jar,日志输出的jar根据自己项目的需要

2020080100173\_1.png

新建数据库,数据表是users,设置id为主键,同时自动增长

2020080100173\_2.png

新建一个资源文件config

编写数据库配置信息文件db.properties:

    driver=com.mysql.jdbc.Driver
    url=jdbc\:mysql\://localhost\:3306/db_mysql?useUnicode\=true&characterEncoding\=utf-8
    username=root
    password=111

编写pojo类:

    package com.mybatis.entity;

    public class User {

        /*
         * ID
         */
        private int id;

        /*
         * 用户姓名 
         */
        private String name;

        /*
         * age
         */
        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 + "]";
        }

    }

编写pojo类对应的mapper文件:

    <?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 
    -->
    <mapper namespace="com.mybatis.mapper.userMapper">

    <!-- 
        在select标签中编写查询的SQL语句, 设置select标签的id属性为findById,id属性值必须是唯一的,不能够重复
        parameterType可以在MyBatis的配置文件里设置,也可以直接用包名+类名
     -->

        <insert id="save" parameterType="User">
        insert into users(id,name,age) value(#{name},#{age})
        </insert>
        <update id="update" parameterType="User">
        update users set name=#{name},age=#{age} where id=#{id}
        </update>
        <delete id="delete" parameterType="int">
        delete from users where id=#{id}
        </delete>
        <select id="findById" parameterType="int" resultType="User">
        select * from users where id=#{id}
        </select>
        <select id="findAll" resultType="User">
        select * from users
        </select>
    </mapper>

然后,在编写MyBatis的配置文件:

    <?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="db.properties" />  

       <!-- 实体类,简称 -设置别名 -->
        <typeAliases>
            <typeAlias alias="User" type="com.mybatis.entity.User" />
        </typeAliases>

        <!-- 读取db.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="com/mybatis/mapper/userMapper.xml"/>
        </mappers>

    </configuration>

测试类:

    import java.io.Reader;

    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 com.mybatis.entity.User;

    public class Test {

        public static void main(String[] args) {
            String resource = "mybatis-config.xml";
            try{
                //加载Mybatis的配置文件
                Reader reader = Resources.getResourceAsReader(resource);
                //构建sqlSession的工厂
                SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
                //创建可以执行sql的SqlSession
                SqlSession session = sessionFactory.openSession();
                //映射sql的标志字符串
                String statement = "com.mybatis.mapper.userMapper.findById";
                //执行查询返回id为1的User对象
                User user = session.selectOne(statement,1);
                System.out.println(user);

            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

然后,可以编写日志文件,进行日志输出

    log4j.properties\uFF0C
    log4j.rootLogger=DEBUG, Console
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

运行测试类,可以输出,说明我们的mybatis搭建好了,可以进行数据库操作

2020080100173\_3.png

需要注意的:

为了统一编码,建议新建数据库时设置成utf-8的

还有测试时,那个id一定要和userMapper.xml里的id对应,mybatis是根据这个id调用sql函数的哦

配置mybatis文件时,一定要注意顺序,一般都是先配置别、数据库配置、然后mapper文件注册的


来源:https://www.cnblogs.com/mzq123

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » MyBatis入门教程(基于Mybatis3.2)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏