mybatis第二天
mybatis第二天
- 1.mybatis 别名设置和sql片段
- 1.1对别名进行设置
- 1.2sql片段设置
- 2.动态sql
- 2.1动态组合查询
- 2.1.1查询类的编写
- 2.1.2映射文件的编写
- 2.1.3测试类
- 2.2动态修改
- 2.2.1集合在sql中的使用(添加数据)
1.mybatis 别名设置和sql片段 1.1对别名进行设置
在sqlMapConfig.xml中可以对类型设置别名
1.2sql片段设置
设置sql片段一般是提取公用的sql在映射文件中写
person_id,name,gender,person_addr,birthday
引用sql片段
2.动态sql 2.1动态组合查询 2.1.1查询类的编写
设置查询类用来接收属性字段的值
public class PersonQueryCondition extends Person{
private String name;
private Integer gender;
private Date birthday;
private String personAddr;
@Override
public String getName() {
return name;
}@Override
public void setName(String name) {
this.name = name;
}@Override
public Integer getGender() {
return gender;
}@Override
public void setGender(Integer gender) {
this.gender = gender;
}@Override
public Date getBirthday() {
return birthday;
}@Override
public void setBirthday(Date birthday) {
this.birthday = birthday;
}@Override
public String getPersonAddr() {
return personAddr;
}@Override
public void setPersonAddr(String personAddr) {
this.personAddr = personAddr;
}
}
2.1.2映射文件的编写
这儿的qc是别名
2.1.3测试类
@Test
public void test() {
SqlSession session = sf.openSession();
try {
PersonQueryCondition qc = new PersonQueryCondition();
qc.setName("信");
qc.setPersonAddr("打");
qc.setBirthday(new Date());
qc.setGender(1);
List personList = session.selectList("configure.mapper.PersonMapper.selectPeron",qc);
for (Person person : personList) {
System.out.println(person);
}
}finally {
session.close();
}
}
2.2动态修改 配置文件
update person p
/*
加p.person_id=#{personId}是防止所有条件为空的情况下的,
不要忘记加上 p.person_id=#{personId},mybatis逆向工程没有这个
必须手动加上
*/
p.person_id=#{personId},
p.name=#{name},
p.gender=#{gender},
p.person_addr=#{personAddr},
p.birthday=#{birthday}
p.person_id=#{personId}
测试类
@Test
public void update() {
SqlSession session = sf.openSession();
try {
Person person = new Person();
person.setPersonId(1);
//person.setGender(1);
session.update("configure.mapper.PersonMapper.dynamicUpdate", person);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally {
session.close();
}
}
2.2.1集合在sql中的使用(添加数据)
解决select *from 表 t where t.xxx in();
的问题
例如:select *from person p where p.person_id in(1,2,3);
配置文件
parameterType只能是map类型 map.put("ids",value),value的值可以是数组,list
foreach是遍历集合组装sql
oepn:以某种字符开始
close:以某种字符结束
separator:以某种字符做分隔
测试类
@Test
public void selectPerson() {
SqlSession session = sf.openSession();
try {
Integer[] id=new Integer[]{1,2,3};
Map map=new HashMap<>();
map.put("ids",id);
List personList = session.selectList("configure.mapper.PersonMapper.selectPersonByIn", map);
for (Person person : personList) {
System.out.println(person);
}
}finally {
session.close();
}
}
批量做入库处理
【mybatis第二天】测试类
@Test
public void insertPerson() {
SqlSession session = sf.openSession();
try {
Map map=new HashMap<>();
List personList=new ArrayList<>();
for (int i = 0;
i <1000008;
i++) {
Person person = new Person();
person.setName("张三"+i);
person.setGender(1);
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:SS");
String date = format.format(new Date());
person.setBirthday(format.parse(date));
person.setPersonAddr("北京"+i);
personList.add(person);
if (i%100==0) {
map.put("personList",personList);
session.insert("configure.mapper.PersonMapper.insertPerson", map);
//将集合清空
personList.clear();
}
}
map.put("personList",personList);
session.insert("configure.mapper.PersonMapper.insertPerson",map);
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}finally {
session.close();
}
}
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- 成都之行第二天
- 自我欣赏第二天
- 打卡第二天(我交新朋友了)
- 如何提高效率