mybatis中的sql映射文件(2)-parameterType

原文链接:这里

0.前言
前面的文章介绍resultType,除了resultType外,我们经常用到的还有parameterType。parameterType是参数类型,就是我们传递给数据库的这个参数的类型,

1.传入类型
基本数据类型:int、string、Date等基本数据类型都可以
类(JavaBean、List): (没有太好的例子,所以归为一类)
Map
注意:

parameterType在查询全部方法不需要这个参数,也就是没有
parameterType添加返回的返回的是****实体类的全类名
parameterType在更新方法里,这个参数返回的也是实体类的全类名
parameterType在删除方法里,这个参数返回的也是实体类的Integer,就是成功影响一条数据的记录表示成功

2.例子
(1)基本类型

场景:比如我要根据学生的id去删除一条数据,那么我就要传入这个学生的id。

StudentsMapper文件

package com.cat.dao;
import com.cat.pojo.Students;
import java.util.List;
import java.util.Map;
public interface StudentsMapper {
//所有学生
List listAllStudents();
//删除一名学生信息
int deleteStudent(int id);
}
Mapper.xml

<?xml version="1.0" encoding="UTF-8"?> select * from students; delete from students where id = #{id} test文件

package com.cat.test;
import com.cat.dao.StudentsMapper;
import com.cat.pojo.Students;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public class MyBatisTest {
@Test
public void test() throws IOException{
//获得核心配置文件
InputStream in = Resources.getResourceAsStream(“MyBatisConfig.xml”);
//获得session工厂对象
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
SqlSession session =factory.openSession();
//获得会话对象
List students =session.selectList(“listAllStudents”);
System.out.println(students);
session.close(); //关闭
}
//测试删除一名学生信息
@Test
public void deleteStudent() throws IOException{
//获得核心配置文件
InputStream in = Resources.getResourceAsStream(“MyBatisConfig.xml”);
//获得session工厂对象
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
SqlSession session =factory.openSession();
//获得会话对象
StudentsMapper studentsMapper = session.getMapper(StudentsMapper.class);
studentsMapper.deleteStudent(1000); //调用deleteStudent方法,删除id是1000的这个学生
session.close(); //关闭
}
}
结果:这样运行之后就完成了根据id删除一条信息的功能。

(2)类(JavaBean、List)

场景:我要新增一个学生的信息,就需要传入这个学生的整体信息。

注:我因为没有好的例子,所以把JavaBean和List都放这,实际用法不完全一样。

StudentsMapper:

package com.cat.dao;
import com.cat.pojo.Students;
import java.util.List;
import java.util.Map;
public interface StudentsMapper {
//新增一名学生
int addStudent(Students students);
}
studentsMapper.xml

<?xml version="1.0" encoding="UTF-8"?> insert into students(stu_name,stu_sex,class_id,age) values (#{stu_name},#{stu_sex},#{class_id},#{age}) test文件

package com.cat.test;
import com.cat.dao.StudentsMapper;
import com.cat.pojo.Students;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
public class MyBatisTest {
//新增一名学生信息
@Test
public void addStudent() throws IOException{
//获得核心配置文件
InputStream in = Resources.getResourceAsStream(“MyBatisConfig.xml”);
//获得session工厂对象
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
SqlSession session =factory.openSession();
//获得会话对象
StudentsMapper studentsMapper = session.getMapper(StudentsMapper.class);
//构造一个新的学生
Students s =new Students();
s.setStu_name(“呵呵”);
s.setClass_id(1042);
s.setAge(16);
s.setStu_sex(“男”);
int res = studentsMapper.addStudent(s); //调用
session.commit(); //增删改必须提交事务
session.close(); //关闭
}
}
这样就可以增加一条学生信息了。

如果增加的信息中出现了乱码请点击这里参考。

(3)map

场景:传入参数符合 #{属性名} ,map中则是#{key} 。比如模糊查询,用户输入词,根据这个词进行模糊查询(实在想不到好例子了)

StudentsMapper:

package com.cat.dao;
import com.cat.pojo.Students;
import java.util.List;
import java.util.Map;
public interface StudentsMapper {
//测试输入参数map
Map <String, Object> findStudent( Map<String,Object> map);
}
studentsMapper.xml

<?xml version="1.0" encoding="UTF-8"?> select * from students s where s.stu_name like '%${stu_name}%' and s.stu_sex like '%${stu_sex}%' test文件

package com.cat.test;
import com.cat.dao.StudentsMapper;
import com.cat.pojo.Students;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyBatisTest {
//测试输入参数是map
@Test
public void findStudent() throws IOException{
//获得核心配置文件
InputStream in = Resources.getResourceAsStream(“MyBatisConfig.xml”);
//获得session工厂对象
SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
SqlSession session =factory.openSession();
//获得会话对象
StudentsMapper studentsMapper = session.getMapper(StudentsMapper.class);
//需求是找一个姓张的男性。
//输入参数的map
Map<String,Object> map1= new HashMap<String, Object>();
map1.put(“stu_name”,“张”);
map1.put(“stu_sex”,“男”);
//返回结果的map,也可以用list等
Map<String,Object> map2 =studentsMapper.findStudent(map1);
System.out.println(map2);
session.close(); //关闭
}
}
结果:

3.后记
文章中的例子不是特别恰当,后面整理增mybatis删改查的时候尽量详细一些。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值