美文网首页
MyBatis 入坑(一)

MyBatis 入坑(一)

作者: jihe | 来源:发表于2018-01-17 23:20 被阅读0次

    概述

    MyBatis 是一款支持自定义 SQL 存储过程和高级映射的优秀轻量级持久层框架,几乎消除了 JDBC 代码和手动参数配置和结果集的检索。通过 xml 和注解的方式配置,映射接口和 pojo 类 「普通 Java 类」到数据库记录。

    小程序

    要使用 MyBatis,只要将 mybatis-x.x.x.jar 文件加载到项目中,下载点击这里下载好的目录下有个 lib 包,里面是 MyBatis 的依赖包,在导入的时候要一起放到项目中。我们下面的入门程序很简单,只要建一个普通的 Java 项目就可以了,建好项目之后,要加载相应的 jar 包,这里需要的包有下面这些:

    • mysql-connector-java-5.1.7-bin.jar 「数据库驱动」
    • mybatis-3.2.7.jarMyBatis 的包」
    • 下载的 mybatis 目录下 lib 下的所有 jarMyBatis 的依赖包」
    • 在项目下创建 config 文件夹,将文件夹属性设置位 soruces Root 「建好 config 文件夹后右键,然后到 mark Driectory as 」,这个文件夹主要用来存放项目中的所有配置文件。

    创建好这些之后,我们下面使用 MyBatis 进行简单的增删改查操作,创建 mybatis 数据库,在数据库中创建 users 表。sql 脚本在我的小程序例子里面。

    1. MyBatis 的核心配置文件 sqlMapConfig.xml ,在 config 目录下创建。
    <?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"/>
        <environments default="development">
            <environment id="development">
                <!--使用JDBC事务管理-->
                <transactionManager type="JDBC"/>
                <!--配置数据库连接池,POOLED 代表使用数据库连接池-->
                <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>
        <!--用来加载mapper映射器-->
        <mappers>
    
        </mappers>
    </configuration>
    

    创建数据库配置的属性文件 db.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?charsetEncoding=utf-8
    username=root
    password=root
    

    这里要注意,MyBatis 默认使用 log4j 作为日志输出,这里在 config 目录下创建它的配置文件 log4j.properties

    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    
    1. 创建实体类

    创建与数据库中表结构相对应的实体类,这里只有一张 users 表,创建与之对应的实体类。

    public class Users {
        private int id;
        private String username;
        private Date birthday;
        private String sex;
        private String address;
        //省略 getter & setter
    }
    

    在配置文件目录 config 下创建 Users.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">
    <!--名称空间,类似于Java中的包结构,避免冲突-->
    <mapper namespace="com.jihe.domain">
    
    </mapper>
    
    • 这里注意一下 namespce 这个属性
    1. 配置文件

    Users.xml 加载到上面的 sqlMapConfig.xml 中:

    <!--用来加载mapper映射器-->
    <mappers>
        <mapper resource="Users.xml"/>
    </mappers>
    

    Users.xml 中编写添加一个用户

    <!--添加用户-->
    <insert id="insertUser" parameterType="com.jihe.domain.Users">
        insert into Users(username,birthday,sex,address)
        values(#{username},#{birthday},#{sex},#{address})
    </insert>
    

    paramterType 参数:SQL 中传入参数类型,通过 #{param} 设置传入的参数值

    1. 测试程序
      创建一个测试包,在其中创建 UesrsTest.java
    public class UsersTest {
        //每个mybatis项目都是基于SqlSessionFactory,先创建SqlSessionFactory实例
        SqlSessionFactory sqlSessionFactory = null;
        //@Before 在执行测试方法之前执行
        @Before
        public void createSqlSessionFactory() throws Exception{
            //核心配置文件的路径
            String source = "sqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(source);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        }
    
        //添加用户测试
        @Test
        public void testInsert(){
            SqlSession session = null;
            try{
                session = sqlSessionFactory.openSession();
                Users user = new Users();
                user.setUsername("jihe");
                user.setBirthday(new Date());
                user.setSex("男");
                user.setAddress("海南海口");
                //这里执行的时候要指定执行那个namespace下的语句
                session.insert("com.jihe.domain.insertUser",user);
                session.commit();
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if(session != null){
                    session.close();
                }
            }
        }
    }
    

    执行成功之后,刷新数据库,就可以看到刚刚插入的一条数据了,以上就是 MyBatis 中简单的插入。

    放只愤怒的小鸟*_*

    小结

    MyBatis 是一款轻量级的持久层框架,可优化性高,因为 SQL 语句是写在映射文件中。学习成本相对于其他持久层框架来说比较低。而且是开源框架,意味着安全性也有保障,以上就是 MyBatis 的入门小程序。九尺之台,起于垒土。在每个点滴中沉淀自己的技术。 Keep fighting !
    点击这里下载上面的程序 demo

    相关文章

      网友评论

          本文标题:MyBatis 入坑(一)

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