最近在做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]

318

被折叠的 条评论
为什么被折叠?



