javaMyBatis知识点总结.docx

上传人:b****6 文档编号:7903614 上传时间:2023-01-27 格式:DOCX 页数:24 大小:100.94KB
下载 相关 举报
javaMyBatis知识点总结.docx_第1页
第1页 / 共24页
javaMyBatis知识点总结.docx_第2页
第2页 / 共24页
javaMyBatis知识点总结.docx_第3页
第3页 / 共24页
javaMyBatis知识点总结.docx_第4页
第4页 / 共24页
javaMyBatis知识点总结.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

javaMyBatis知识点总结.docx

《javaMyBatis知识点总结.docx》由会员分享,可在线阅读,更多相关《javaMyBatis知识点总结.docx(24页珍藏版)》请在冰豆网上搜索。

javaMyBatis知识点总结.docx

javaMyBatis知识点总结

MyBatis

学习mybatis入门Example:

第一步:

建立java工程

第二步:

导入jar包

第三步:

编写配置文件

①.sqlMapConfig.xml

②.jdbc.properties及log4j.properties(略)

③.编写Mapper.xml文件

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEmapper

PUBLIC"-//mybatis.org//DTDMapper3.0//EN"

"http:

//mybatis.org/dtd/mybatis-3-mapper.dtd">

select*frompersonwhereid=#{id}

④.编写javabean类(略)

⑤.编写测试类

publicclassMyBatisTest{

SqlSessionFactorysqlSessionFactory;

@Before

publicvoidsetUp()throwsException{

InputStreamin=Resources.getResourceAsStream("sqlMapConfig.xml");

sqlSessionFactory=newSqlSessionFactoryBuilder().build(in);

}

@Test

publicvoidtest(){

SqlSessionsession=sqlSessionFactory.openSession();

Personperson;

try{

person=session.selectOne("cn.itcast.Person.selectPerson",1);

System.out.println(person);

}finally

{

session.close();

}

}

}

⑥.运行结果

2014-05-1901:

16:

49,657[main]DEBUG[cn.itcast.Person.selectPerson]-==>Preparing:

select*frompersonwhereid=?

2014-05-1901:

16:

49,677[main]DEBUG[cn.itcast.Person.selectPerson]-==>Parameters:

1(Integer)

Person[id=1,name=张无忌,birthday=MonMay1200:

00:

00CST2014,address=陕西,salary=2312]

发现运行成功,sql语句生成成功。

注意:

javabean没有set,get方法,也能注入值成功

ØMybatis的简单查询

第一:

javabean可以和数据库字段不一致,不一致时需要在配置文件指明

数据表如下:

发现字段使用了下划线:

javabean属性命名必须遵循驼峰模式

那么现在我使用上面的Test进行查询时:

(查询前:

把select*frompersonwhereperson_id=#{id}修改为数据库字段)

查询结果:

Person[personId=null,name=张无忌,birthday=MonMay1200:

00:

00CST2014,personAddress=null,salary=2312]

我们发现:

personId和personAddress都为null,而其他的全部有值。

可以发现:

他们的值没有匹配上,即数据库的字段和javabean的字段不匹配。

那么解决方案是:

在mapper文件中创建映射Map:

--

#{id}:

接收参数的语法publicvoidadd(Stringname),采用欲查询的策略,一个参数的时候{}内的参数名任意

parameterType:

输入参数的类型

resultType:

返回值的类型

-->

mappernamespace="cn.itcast.Person">

select*frompersonwhereperson_id=#{id}

查询结果为:

Person[personId=1,name=张无忌,birthday=MonMay1200:

00:

00CST2014,personAddress=陕西,salary=2312]

发现空值消失,真值出现。

第二:

查询数据条数

①.创建select代码

selectid="selectCount"resultType="int">

selectCOUNT(*)fromperson

②.编写test代码

publicvoidtest1(){

SqlSessionsession=sqlSessionFactory.openSession();

intperson;

try{person=session.selectOne("cn.itcast.Person.selectCount");

System.out.println(person);

}finally

{

session.close();

}

}

第三:

返回类型Map

select*frompersonwhereperson_id=#{id}

@Test

publicvoidtest2(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Mapperson=session.selectOne("cn.itcast.Person.selectPersonForMap",1);

System.out.println(person);

}finally

{

session.close();

}

}

第四:

使用map传递参数

1.编写配置文件Mapper

select*frompersonwhereperson_id=#{id}andsalary=#{salary}

②.编写java代码

publicvoidtest3(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Mapmap=newHashMap();

map.put("id",1);

map.put("salary",2312);

Personperson=session.selectOne("cn.itcast.Person.selectPersonForList",map);

System.out.println(person);

}finally

{

session.close();

}

}

第五:

查询返回List集合

1.编写配置文件

select*fromperson

②.编写测试代码

publicvoidtest4(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Listperson=session.selectList("cn.itcast.Person.selectPersonForAll");

System.out.println(person);

}finally

{

session.close();

}

}

第六:

模糊查询

①.编写配置文件

--模糊查询:

${}:

用于模糊查询,采用品字符串的形式

-->

select*frompersonpwherep.namelike'%${name}%'

②.编程代码

publicvoidtest6(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Mapmap=newHashMap();

map.put("name","张");

Personperson=session.selectOne("cn.itcast.Person.selectPersonByLike",map);

System.out.println(person);

}finally

{

session.close();

}

}

第七:

传递参数使用javabean

①.编写配置文件

--

#{name}:

name是实体类里的get方法后面的字符串

-->

select*frompersonpwherep.person_id=#{id}

②.编写javabean

③.编写java代码进行调用

publicvoidtest5(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Conditionc=newCondition();

c.setId

(1);

Personperson=session.selectOne("cn.itcast.Person.selectPersonByCondition",c);

System.out.println(person);

}finally

{

session.close();

}

}

第八:

进行数据保存

①.编写xml文件

--

做了两件事:

主键的自增,主键的返回

keyProperty:

实体类里面的主键

order:

主键生成和sql语句执行的顺序,在mysql中AFTER,oracle中是BEFORE

resultType:

实体类中主键的类型

selectLAST_INSERT_ID():

mysql的主键生成语句

selectxxx.nextvalfromdual:

oracle的主键生成语句

-->

selectLAST_INSERT_ID()

insertintoperson(person_id,name,birthday,person_address,salary)

values(#{personId},#{name},#{birthday},#{personAddress},#{salary})

②.编写java测试代码

publicvoidtest7(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Personp=newPerson();

p.setPersonAddress("西安");

p.setBirthday(newDate());

p.setSalary(50000);

p.setName("黄花");

session.insert("cn.itcast.Person.insert",p);

mit();

}catch(Exceptione){

session.rollback();

}

finally

{

session.close();

}}

第九:

批量插入

第十:

动态sql进行查询

①.编写配置文件

--where标签可以自动处理第一个and,if之中的test中与{}中的值一致-->

select*frompersonp

=null">

andp.namelike'%${name}%'

=null">

andp.person_addresslike'%${personAddr}%'

=null">

[CDATA[

andp.salary>#{salary}

]]>

=null">

[CDATA[

andp.birthday>#{birthday}

]]>

②.编写代码

@Test

publicvoidtest8(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Mapmap=newHashMap();

map.put("name","张");

map.put("personAddr","陕西");

map.put("salary",2000);

Personperson=session.selectOne("cn.itcast.Person.selectPersonByConditions",map);

System.out.println(person);

}finally{

session.close();}}

第十:

批量查询

①.编写配置文件

--

collection:

集合,map中的集合的key

open:

以某种字符开始

close:

以某种字符结尾

index:

当前遍历到的位置

item:

集合中每一项

separator:

集合中每项之间的分隔符

map.put("ids",list);

map.put("name","zhangsan")

如果map中只用集合,没有形如:

map.put("name","zhangsan")需要使用foreach可以省略parameterType="map",collection可以直接从map中获得集合

-->

select*frompersonpwherep.person_idin

#{personId}

--andp.name=#{name}-->

②.编写java代码

@Test

publicvoidselectPersonByIn(){

SqlSessionsession=sqlSessionFactory.openSession();

try{

Listlist=newArrayList();

list.add

(1);

list.add

(2);

Mapmap=newHashMap();

map.put("ids",list);

Listperson=session.selectList("cn.itcast.Person.selectPersonByIn",map);

System.out.println(person);

}finally

{

session.close();

}}

查询结果:

2014-05-2110:

33:

38,736[main]DEBUG[cn.itcast.Person.selectPersonByIn]-==>Preparing:

select*frompersonpwherep.person_idin(?

?

2014-05-2110:

33:

38,767[main]DEBUG[cn.itcast.Person.selectPersonByIn]-==>Parameters:

1(Integer),2(Integer)

[Person[personId=1,name=张无忌,birthday=MonMay1200:

00:

00CST2014,personAddress=陕西,salary=2312],Person[personId=2,name=周芷若,birthday=FriMay2300:

00:

00CST2014,personAddress=陕西,salary=5679]]

第十一:

批量插入

①.编写配置文件

--

insertintoperson(person_id,name)

values(1,'zhangsan'),(2,'lisi'),....

-->

selectLAST_INSERT_ID()

insertintoperson(person_id,name,birthday,person_address,salary)

values

(#{person.personId},#{person.name},#{person.birthday},#{person.personAddress},#{person.salary})

②.编写代码

publicvoidtest9(){

SqlSessionsession=sqlSessionFactory.openSession();

List

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1