美文网首页Java
MyBatis入门

MyBatis入门

作者: 满庭花醉三千客 | 来源:发表于2019-04-03 17:54 被阅读0次

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    具体该如何使用呢?开始:

    首先新建一个Maven项目:

    屏幕快照 2019-01-08 上午11.05.35.png

    点击Next然后进入:

    屏幕快照 2019-01-08 上午11.07.00.png

    点击next:

    屏幕快照 2019-01-08 上午11.07.10.png

    点击Finish:

    屏幕快照 2019-01-08 上午11.08.14.png

    接下来我们在项目-src-main-resource目录下,新建一个文件夹:

    屏幕快照 2019-01-08 上午11.18.39.png

    取名为mapper:

    屏幕快照 2019-01-08 上午11.18.53.png

    前期准备工作已完成。接下来,我们导入两个依赖库:mybatis和mysql-connector-java。前往:https://mvnrepository.com搜索并复制到pom.xml文件中:

    完成后pom.xml是这样的:

    屏幕快照 2019-01-09 下午2.53.36.png

    接下来我们新建一个java类的User.java,并编码:

    package com.bianla.wql;
    
    public class User {
    
        //这里的属性名要与数据库字段相同,否则获取不到值
    
        private int id;
    
        private String name;
    
        private String phone;
    
        public int getId() {
    
            return id;
    
        }
    
        public void setId(int id) {
    
            this.id = id;
    
        }
    
        public void setName(String name) {
    
            this.name = name;
    
        }
    
        public String getName() {
    
            return name;
    
        }
    
        public void setPhone(String phone) {
    
            this.phone = phone;
    
        }
    
        public String getPhone() {
    
            return phone;
    
        }
    
    }
    

    此时界面如下:

    屏幕快照 2019-01-09 下午3.01.27.png

    然后打开Database,输入以下代码,创建一张User表:

    CREATE TABLE `User` (
    
                          `id` int(11) NOT NULL AUTO_INCREMENT,
    
                          `name` varchar(255) DEFAULT NULL,
    
                          `phone` varchar(255) DEFAULT NULL,
    
                          PRIMARY KEY (`id`)
    
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    INSERT INTO `User` VALUES (1, '赵子龙', '13788889999');
    
    INSERT INTO `User` VALUES (2, '张三', '13801234567');
    
    屏幕快照 2019-01-08 下午2.17.40.png

    然后运行一下:

    屏幕快照 2019-01-08 下午2.18.23.png

    成功创建了User表。
    接下来在resources文件夹下,创建mysql.properties文件:

    屏幕快照 2019-01-08 下午1.45.30.png

    接着进入:

    屏幕快照 2019-01-08 下午1.46.05.png

    命名一下即可。

    接着在mysql.properties文件中写入:

    jdbc.driver=com.mysql.jdbc.Driver
    
    jdbc.url=jdbc:mysql://localhost:3306/wl_test_database?useSSL=false
    
    jdbc.username=root
    
    jdbc.password=Aa123456
    

    效果:

    屏幕快照 2019-01-09 下午3.11.04.png

    然后我们前往src-main-resources-mapper中创建一个UserMapper.xml文件,并编码:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper
    
            PUBLIC "-//[mybatis.org//DTD](http://mybatis.org//DTD)mapper 3.0//EN"
    
            "[http://mybatis.org/dtd/mybatis-3-mapper.dtd](http://mybatis.org/dtd/mybatis-3-mapper.dtd)">
    
    <mapper namespace="com.bianla.wql.User">
    
        <!--在映射文件中配置很多sql语句-->
    
        <!--将sql语句封装到mappedStatement对象中,所以将id称为statement的id-->
    
        <!--parameterType:指定输入参数的类型-->
    
        <!--resultType:指定sql的输出结果所映射的java对象类型。select指定resultType表示将单条记录映射成对应的java对象-->
    
        <!--#{}表示一个占位符号,#{id},其中的id表示接收输入的参数。如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或其他名称-->
    
        <!--表名要正确,不区分大小写。resultType要写类名,同样不区分大小写-->
    
        <select id="findById" parameterType="int" resultType="com.bianla.wql.User">
    
            SELECT * FROM User WHERE id=#{id}
    
        </select>
    
    </mapper>
    

    效果:

    屏幕快照 2019-01-09 下午3.14.46.png

    我们接下来在resources文件夹下创建MyBatis-config文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPEconfiguration
    
            PUBLIC"-//[mybatis.org//DTD](http://mybatis.org//DTD)Config 3.0//EN"
    
            "[http://mybatis.org/dtd/mybatis-3-config.dtd](http://mybatis.org/dtd/mybatis-3-config.dtd)">
    
    <configuration>
    
        <!--加载属性文件-->
    
        <properties resource="mysql.properties"/>
    
        <typeAliases>
    
            <!--定义别名,针对单个别名进行定义。type:类的路径  alias:别名-->
    
            <!--类名不能写错;别名可以随意起,但力求规范-->
    
            <typeAlias type="com.bianla.wql.User" alias="User"/>
    
        </typeAliases>
    
        <!--环境配置-->
    
        <environments default="development">
    
            <environment id="development">
    
                <!--使用JDBC事务管理,事务控制由mybatis-->
    
                <transactionManager type="JDBC"></transactionManager>
    
                <!--数据库连接池,由mybatis管理-->
    
                <dataSource type="POOLED">
    
                    <property name="driver" value="${jdbc.driver}"/>
    
                    <property name="url" value="${jdbc.url}"/>
    
                    <property name="username" value="${jdbc.username}"/>
    
                    <property name="password" value="${jdbc.password}"/>
    
                </dataSource>
    
            </environment>
    
        </environments>
    
        <!--加载映射文件-->
    
        <mappers>
    
            <!--通过resource方法一次加载一个映射文件-->
    
            <!--注意这里的路径和xml文件名-->
    
            <mapper resource="mapper/UserMapper.xml"/>
    
        </mappers>
    
    </configuration>
    

    效果是这样的:

    屏幕快照 2019-01-09 下午3.07.07.png

    然后我们创建一个UserTest文件来测试一下,编码:

    package com.bianla.wql;
    
    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 java.io.IOException;
    
    import java.io.InputStream;
    
    public class UserTest {
    
        public static void main(String [] args){
    
            // mybatis配置文件,这个地方的root地址为resources,因此我们的配置文件要放置在resources目录下
    
            String resource = "mybatis-conf.xml";
    
            // 配置文件流
    
            InputStream stream = null;
    
            try {
    
                // 得到配置文件流
    
                stream = Resources.getResourceAsStream(resource);
    
                // 创建会话工厂,传入mybatis的配置文件信息
    
                SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
    
                //通过工厂,得到sqlSession
    
                SqlSession session = factory.openSession();
    
                User user = session.selectOne("findById",2);
    
    [session.commit();](http://session.commit();/)
    
                System.out.println("ID:"+user.getId()+**”****\n名字:"**+user.getName()+**”****\n手机号:"**+user.getPhone());
    
            }catch (IOException e){
    
                e.printStackTrace();
    
            }
    
        }
    
    }
    
    屏幕快照 2019-01-09 下午3.35.28.png

    此时我们运行一下:

    屏幕快照 2019-01-09 下午3.35.51.png

    加油~

    相关文章

      网友评论

        本文标题:MyBatis入门

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