mysql where trime_mybatis动态SQL--Trim --Where

Trim是干嘛的?

是在你动态语句拼接的时候处理where 1=1

开始干活,配置mapper映射XML文件,写语句

/Mybatis02/config/mappers/GoodsInfoMapper.xml

select * from goods

and name like '${name}%'

and id =${id}

然后去创建一个与select标签id名一样的接口方法

/Mybatis02/src/com/chen/dao/GoodsDao2.java

//动态SQL。。Trim

public List queryByTrim(GoodsInfo a );

然后主入口类调用

/Mybatis02/src/test/Start2.java

public class Start2 {

public static void main(String[] args) throws IOException {

String resource = "mybatis-conf.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

//创建SqlSessionFactory

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

//true表示自动提交。否则需要使用commit方法才会提交。默认是false

SqlSession session = sqlSessionFactory.openSession();

//拿到接口的代理对象

GoodsDao2 dao=session.getMapper(GoodsDao2.class);

//拿到了dao这个对象接下来就可以创建sql语句了;(直接调用接口方法)

//因为接口方法里需要传入一个对象,所以

GoodsInfo goods =new GoodsInfo();

//然后给对象插属性

goods.setId(10);

goods.setName("牛");

List list =dao.queryByTrim(goods);

System.out.println(list.size());

//如果上面不设置自动提交表单,那么就需要commit方法

session.commit();

}

}

点击运行

94c32bc3a3f5acd8638a7e3d4e8de4b4.png

出现了报错,看了一段时间还找不到什么原因,先放着

先学习和Trim标签比较相似的------Where

/Mybatis02/config/mappers/GoodsInfoMapper.xml

select * from goods

name like '${name}%'

and id=${id}

/Mybatis02/src/com/chen/dao/GoodsDao2.java

//动态SQ; 。。Where

public List queryByWhere(GoodsInfo a);

/Mybatis02/src/test/Start2.java

public class Start2 {

public static void main(String[] args) throws IOException {

String resource = "mybatis-conf.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

//创建SqlSessionFactory

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

//true表示自动提交。否则需要使用commit方法才会提交。默认是false

SqlSession session = sqlSessionFactory.openSession();

//拿到接口的代理对象

GoodsDao2 dao=session.getMapper(GoodsDao2.class);

//拿到了dao这个对象接下来就可以创建sql语句了;(直接调用接口方法)

//因为接口方法里需要传入一个对象,所以

GoodsInfo goods =new GoodsInfo();

//然后给对象插属性

goods.setId(10);

goods.setName("牛");

List list =dao.queryByWhere(goods);

System.out.println(list.size());

//如果上面不设置自动提交表单,那么就需要commit方法

session.commit();

}

}

运行结果

8d4a50f0b74b9b79b304b02ede40c90e.png

它mysql客户端里实质执行是这一条语句

292b12c43f1d4ac6c5cbc8431414cc2f.png

回过头来看看写的这个where标签

f62aec47517cf783e281d763efd4d82e.png

即是说,如果我传入的id参数和name参数都不为空,那么它就会自动拼接上去,。(相当于执行 select * from goods where name like '?%' and id=? 这条语句)

小细节

假如我把and 也加上去,它是会自动帮你省略掉的,运行不会出错

98e418466573d8e640a32c4a9c83cc46.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值