Mybatis的简单使用

最近在做Spring的开发的时候,需要用到mybatis框架,mybatis就是一个简单的用来进行数据库操作的框架。虽然不是很懂,但是记录下来方便一下没有使用过但需要直接上手的童子们看看吧。

我这里就不说怎么样去配置mybatis了,需要在pom.xml中添加相应的依赖

在添加完了以后呢,我就来记录一下怎么样使用把。

在使用Spring的时候呢,Application通过Controller来进行Url的访问,也就是说,我们在输入一个url,那么Spring就可以通过这个Url找到对应需要调用的方法了。

@GetMapping(value = "/received-doc/get/{project_id}")
    public Object getReceivedDoc(@PathVariable("project_id") Long projectId){
        return jsonObjectArrayList;
    }

如上面所示,通过注解@GetMapping这个注解可以知道浏览器要通过后面的url来访问的时候,需要用GET方法。然后通过花括号括起来的,里面是url传入的参数,在函数的参数列表里面,可以通过@PathVariable来获取里面的参数的值,并赋予到我们自己定义的变量名中。

如果我们把Controller看成是我们访问的入口的话,那么我们就可以Service文件夹下面新建对应这个Controller的Service,在Service下,我们新建一个文件夹impl,impl就是用来存放对应的Service的实现方法的(ServiceImpl)

entity文件夹放入实体类,对数据库需要操作需要用上dataSource的对数据库的操作类等等。但是这里我就不详细说了,我就说说Mybatis的东西。

Mybatis需要在dao文件夹下编写***Mapper.java,在这个文件里面,是一个接口类,接口类实现的是我们需要对数据库进行的操作的函数

例如:在DocMapper.java中

public interface DocumentMapper {
    ArrayList<MailBufferClass> getDocFromBuffer();
}

这个函数我们看,是返回一个ArrayList<MailBufferClass>的一个列表,不需要传入参数

那这个时候我们有了一个mapper,我们就需要实现他了:在DocMapper.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="com.scut.emos.dao.DocumentMapper">

    <select id="getDocFromBuffer" resultType="com.scut.emos.entity.MailBufferClass">
        SELECT * FROM tb_doc_buffer
    </select>

</mapper>

DocMapper.java中,存放了需要调用的函数,在DocMapper.xml中存放了具体的实现方法,我们现在需要select语句,所以选择

<select>,id就是你需要调用的在DocMapper.java中的方法,其中有一个parameterType用来放你的传入的函数的类型,但是在这里我没有传入参数,所以就没有了,resultType就是返回的结果的类型,我这里把数据库查询的结果通过驼峰命名转换到了我的一个实体类中,这是Mybatis的一个映射功能。

这样就会返回通过数据库select到的结果,并且把结果做了驼峰命名映射的返回值为ArrayList<MailBufferClass>的结果了

【注意】

在使用Mybatis的时候,如果出现了驼峰命名没有对应上的时候,需要写resultMap来手动确认对应关系,例如:

<?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="com.scut.emos.dao.ReceivedDocumentMapper">

    <resultMap id="ReceivedDocMapper" type="com.scut.emos.entity.ReceivedDocumentClass" >
        <result column="pk_received_doc_id" jdbcType="BIGINT" property="pkReceivedDocId"/>
        <result column="doc_class_id" jdbcType="BIGINT" property="docClassId"/>
        <result column="doc_class_name" jdbcType="VARCHAR" property="docClassName"/>
        <result column="associated_doc" jdbcType="BIGINT" property="associatedDoc"/>
        <result column="address" jdbcType="VARCHAR" property="address"/>
        <result column="email_name" jdbcType="VARCHAR" property="emailName"/>
        <result column="theme" jdbcType="VARCHAR" property="theme"/>
        <result column="theme_order" jdbcType="VARCHAR" property="themeOrder"/>
        <result column="theme_id" jdbcType="BIGINT" property="themeId"/>
        <result column="topic" jdbcType="VARCHAR" property="topic"/>
        <result column="received_date" jdbcType="DATE" property="receivedDate"/>
        <result column="appendix_url" jdbcType="VARCHAR" property="appendixUrl"/>
        <result column="content" jdbcType="LONGVARCHAR" property="content"/>
        <result column="reply_person" jdbcType="VARCHAR" property="replyPerson"/>
        <result column="company_reply_date" jdbcType="DATE" property="companyReplyDate"/>
        <result column="company_reply_numbers" jdbcType="VARCHAR" property="companyReplyNumbers"/>
        <result column="reply_date" jdbcType="DATE" property="replyDate"/>
        <result column="is_added_money" jdbcType="TINYINT" property="addedMoney"/>
    </resultMap>


    <select id="getReceivedDocumentList" resultMap="ReceivedDocMapper">
        SELECT * from tb_received_doc
    </select>

  
</mapper>

在resultMap中,先确定id,然后确定这个返回resultMap的对应的类(我们是要在程序中使用的),然后在把数据库中的列名和我类中的变量名关系关联起来(就像我的colum和property的对应这样),其中jdbcType是很重要的,Text类型的数据库字段在这里我们的jdbcType = "LONGVARCHAR"

如果jdbcType对应不上的话,这里有可能到处Spring服务启动失败而且没有报错的(OTZ=3  DeBug很痛苦的)

BIT	FLOAT	CHAR	TIMESTAMP	OTHER	UNDEFINED
TINYINT	REAL	VARCHAR	BINARY	BLOG	NVARCHAR
SMALLINT	DOUBLE	LONGVARCHAR	VARBINARY	CLOB	NCHAR
INTEGER	NUMERIC	DATE	LONGVARBINARY	BOOLEAN	NCLOB
BIGINT	DECIMAL	TIME	NULL	CURSOR	ARRAY

上面就是Mybatis支持的一些数据类型,可以参考一下:还有从其他地方参考来的资料:

JDBC Type           Java Type  
CHAR                String  
VARCHAR             String  
LONGVARCHAR         String  
NUMERIC             java.math.BigDecimal  
DECIMAL             java.math.BigDecimal  
BIT             boolean  
BOOLEAN             boolean  
TINYINT             byte  
SMALLINT            short  
INTEGER             int  
BIGINT              long  
REAL                float  
FLOAT               double  
DOUBLE              double  
BINARY              byte[]  
VARBINARY           byte[]  
LONGVARBINARY               byte[]  
DATE                java.sql.Date  
TIME                java.sql.Time  
TIMESTAMP           java.sql.Timestamp  
CLOB                Clob  
BLOB                Blob  
ARRAY               Array  
DISTINCT            mapping of underlying type  
STRUCT              Struct  
REF                         Ref  
DATALINK            java.net.URL[color=red][/color]  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值