Java的mybaties框架,java中使用MyBatis,简单实例学习MyBatis框架

一、定义

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、java使用mybatis调用数据库的整体思路

(启动类调用Dao层–Dao层调用对应的Mapper)

在mybatis中sql是写在xml映射文件中的,所以在Java中调用数据库的数据使用mybatis是这样写的(xml文件都放在mapper文件夹下)

a64775414e507ab8af15f1456d226029.png

select * from ceshi

在xml中namespace指定对应的调用Dao层

e8c1d42947d76e620d3c54f5da153403.png

(注意,Dao层定义的名字ceshixxcx要和其调用的xml文件中的对应sql模块的id相同)

package com.java.dao;

import java.util.List;

import java.util.Map;

import org.springframework.stereotype.Repository;

import com.dcits.model.ceshi;

@Repository

public interface ceshiDao{

List> ceshixxcx();

}

最后,在Java的启动类里面调用Dao层定义好的ceshixxcx

//定义

@Autowired

private ceshiDao csDao;

//调用 获取数据,其中定义的ceshiResults的数据类型要和Dao中ceshixxcx的数据类型一致

List> ceshiResults= null;

ceshiResults= csDao.ceshixxcx();

//循环获取每一条数据

for(Map csxx:ceshiResults){

//这里就可以使用获取每一条数据的每个你想获取的对应列值

String a = csxx.get("T1").toString();

...

}

三、MyBatis中xml文件写法注意点

如果sql中有一些特殊字符的话,在解析xml文件的时候就会被转义,因为 在mybatis中sql是写在xml映射文件中。

所以不注意这个点的话,有时候写sql语句在xml里面却提示错误 比如(select * ceshi t where t.t1<1 )

正确的写法是,

**方法一:**将">“这个特殊字符转义,使用”< “替换”

select * from ceshi < 1

那么sql语句中用到全部需要注意的特殊字符有哪些呢?

这里全部列出来,将其对应的替换即可。

< ----------------- < ------小于

> ----------------- > -------大于

<= ----------------- ≤ ------小于

>= ----------------- ≥ -------大于

' ----------------- ' ------单引号

" ----------------- " -------引号

“ ----------------- &lquot; -------左双引号

” ----------------- &rquot; -------右双引号

‘ ----------------- &lapos; ------左单引号

’ ----------------- &rapos; ------右单引号

**方法二:**使用符号 将 “ 中 ,(其他特殊字符也一样)

select * from ceshi 1

四、使用mybatis带变量操作数据库

理解了一二点;直接例子说明怎么使用变量:

在主类给一个变量调用的:

1、根据变量更新/插入数据库,这里只写更新(插入就将update改为insert即可)

@Autowired

private ceshiDao csDao;

---------------

String num ='123';

csDao.updateceshixx(num) ;

在Dao层定义(对应名字):

package com.java.dao;

import java.util.List;

import java.util.Map;

import org.springframework.stereotype.Repository;

import com.dcits.model.ceshi;

@Repository

public interface ceshiDao{

Int updateceshixx(String t1);

}

在mapper中的xml(对应id):

update ceshi

set t1 = #{t1,jdbcType=VARCHAR}

(注意 #{t1,jdbcType=VARCHAR} 中的t1必须是数据表中的列名;jdbcType的类型必须与中的parameterType一致且要注意和数据库类型一致;Dao层和主类调用的赋给变量的类型要与前面两个的变量类型一致)

如果是要其他类型比如整形,就将类型全部改成jdbcType=INTEGER、

2、根据变量查询对应数据

调用是一样的,我就只复制不同的:(其中,如果查询出来的数据只有一条,可以直接这样定义:Map ceshixx_id(INTEGER t2);

在mapper中的xml(对应id):

select * from ceshi

where t2 = #{t2,jdbcType=INTEGER}

Dao层定义:

List> ceshixx_id(INTEGER t2);

主类调用:

Integer n =1;

List> ceshixx_idResults= null;

ceshixx_idResults=csDao.ceshixx_id(n) ;

其中,如果要将获取到的某个object类型的值转换成整形,可以这样做:

Integer n2 =0;

n2 = Integer.parseInt(ceshixx_idResults.get("T3").toString());

3.整合;

Dao层和xml同一个表的可以就放在同一个文件中:

如:

Dao层,整合:

package com.java.dao;

import java.util.List;

import java.util.Map;

import org.springframework.stereotype.Repository;

import com.dcits.model.ceshi;

@Repository

public interface ceshiDao{

List> ceshixxcx();

Int updateceshixx(String t1);

List> ceshixx_id(INTEGER t2);

}

对应XML:

select * from ceshi

update ceshi

set t1 = #{t1,jdbcType=VARCHAR}

select * from ceshi

where t2 = #{t2,jdbcType=INTEGER}

注意: resultType=“map” 输出数据类型;parameterType=“java.lang.INTEGER” 输入数据(变量)类型;(根据对应的需要查看是否写上这两个)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值