从另一个角度来看mybatis入门

从项目结构来看mybatis的使用

我是从一个最基础的java项目来练习使用mybatis的,项目整体框架如图:
从一个blog管理来看mybatis
其中:
- libs目录:存放了需要的类库,包括mybatis的库和mysql 的
- java目录下使用有三个目录:

  • Beans:存放bean类
  • MapperInterfaces目录:存放对某一个bena操作的接口描述
  • Utiles:存放一些工具类,这里只有生成SqlSession的类MySqlSessionFactory
    - MainClass:测试程序


  • resources:

  • 存放mapper的xml文件
  • config.properties:数据库连接的配置文件
  • mybatis-config.xml:mybatis的配置文件

对关键文件做出解释:

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

    <!--必须放在文件的最前面,数据库的地址配好了-->
    <!--setting不用自己来配置,基本不用自己来管-->
    <settings>
        <!-- Globally enables or disables any caches configured in any mapper under this configuration -->
        <setting name="cacheEnabled" value="true"/>
        <!-- Sets the number of seconds the driver will wait for a response from the database -->
        <setting name="defaultStatementTimeout" value="3000"/>
        <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- Allows JDBC support for generated keys. A compatible driver is required.
        This setting forces generated keys to be used if set to true,
         as some drivers deny compatibility but still work -->
        <setting name="useGeneratedKeys" value="true"/>
    </settings>

    <!-- Continue going here -->

    <!--后面的主机名必须使用127.0.0.1-->
    <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://127.0.0.1:3306/blog?autoReconnect=true"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <!--要在这里说明都定义了哪些mapper,以便mybatis去找这个mapper
        其实是mapper文件最终都被转化成了实现了BlogMapper这个接口的类文件(我也是猜的。。。)-->
        <!--以后工程大了后,这里应该会有很多的mapper的,会映射到我们写的mapper.xml文件-->
    <mappers>
        <mapper resource="mappers/blogMapper.xml"/>
    </mappers>

</configuration>

这个文件基本上不用改动,使用Intellij会自动生成,mapper.xml文件如下
2. mapper.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">
<mapper namespace="Mapper.MapperInterfaces.BlogMapper">
    <!--mybatis在这里找到了连接数据库的语句,并执行之-->
    <select id="selectBlog" resultType="Beans.Blog">
        select * from Blog where id = #{id}
    </select>

    <insert id="addBlog" parameterType="Beans.Blog">
        INSERT INTO Blog (id, name) VALUES (#{id},#{name})
    </insert>
</mapper>

那么我们怎么在java程序代码中去告诉mybatis我们要执行哪一条语句呢?这就要有Mapper对应的interface啦
3.BlogMapper(interface)

package Mapper.MapperInterfaces;

import Beans.Blog;

/**
* 仅仅是定义了两个方法,注意,这里的方法名一定要和mapper.xml文件中定          *义的语句的id号码是一致的,这样才能找到。
 * 从这个类中去找具体的实现语句,在mapper.xml文件中
 * Created by fei on 5/2/15.
 */
public interface BlogMapper {
    Blog selectBlog(int id);
    int addBlog(Blog blog);
}

这样我们在MainClass中就可以执行操作数据库的代码了。
4.MainClass

import Beans.Blog;
import Mapper.MapperInterfaces.BlogMapper;
import Utils.MySqlSessionFactory;
import org.apache.ibatis.session.SqlSession;

/**
 * Created by fei on 5/2/15.
 */
public class MainClass {
    public static void main(String [] args){
        //得到这个mapper的接口,方便后续的调用
        BlogMapper blogMapper = session.getMapper(BlogMapper.class);

        //查询blog
        Blog blog = blogMapper.selectBlog(101);
        if (blog!=null){
            System.out.println(blog.getName());
        }

        //添加Blog
        Blog addedBlog = new Blog();
        addedBlog.setId(2);
        addedBlog.setName("li");
        int status = blogMapper.addBlog(addedBlog);
        System.out.print(status);

    }
}

这样mybatis就能够使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值