cad外包网站,合肥网站开发公司电话,wordpress主题Tendor,高等教材建筑电气久久建筑网文章目录 简介单个字面量类型的参数多个字面量类型的参数map集合类型的参数实体类类型的参数使用Param标识参数总结 简介
MyBatis获取参数值的两种方式#xff1a;${}和#{}${}的本质就是字符串拼接#xff0c;#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql#x… 文章目录 简介单个字面量类型的参数多个字面量类型的参数map集合类型的参数实体类类型的参数使用Param标识参数总结 简介
MyBatis获取参数值的两种方式${}和#{}${}的本质就是字符串拼接#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql若为字符串类型或日期类型的字段进行赋值时需要手动加单引号但是#{}使用占位符赋值的方式拼接sql此时为字符串类型或日期类型的字段进行赋值时可以自动添加单引号
单个字面量类型的参数
若mapper接口中的方法参数为单个的字面量类型此时可以使用${}和#{}以任意的名称最好见名识意获取参数的值注意${}需要手动加单引号
!--User getUserByUsername(String username);--
select idgetUserByUsername resultTypeUserselect * from t_user where username #{username}
/select!--User getUserByUsername(String username);--
select idgetUserByUsername resultTypeUser select * from t_user where username ${username}
/select多个字面量类型的参数
若mapper接口中的方法参数为多个时此时MyBatis会自动将这些参数放在一个map集合中
1. 以arg0,arg1...为键以参数为值
2. 以param1,param2...为键以参数为值因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号。使用arg或者param都行要注意的是arg是从arg0开始的param是从param1开始的
!--User checkLogin(String username,String password);--
select idcheckLogin resultTypeUser select * from t_user where username #{arg0} and password #{arg1}
/select!--User checkLogin(String username,String password);--
select idcheckLogin resultTypeUserselect * from t_user where username ${param1} and password ${param2}
/selectmap集合类型的参数
若mapper接口中的方法需要的参数为多个时此时可以手动创建map集合将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号
!--User checkLoginByMap(MapString,Object map);--
select idcheckLoginByMap resultTypeUserselect * from t_user where username #{username} and password #{password}
/selectTest
public void checkLoginByMap() {//读取MyBatis的核心配置文件InputStream is Resources.getResourceAsStream(mybatis-config.xml);//获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory生产SqlSession对象SqlSessionFactory sqlSessionFactory sqlSessionFactoryBuilder.build(is);//获取sqlSession此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务//SqlSession sqlSession sqlSessionFactory.openSession();//创建SqlSession对象此时通过SqlSession对象所操作的sql都会自动提交SqlSession sqlSession sqlSessionFactory.openSession(true);//通过代理模式创建UserMapper接口的代理实现类对象UserMapper userMapper sqlSession.getMapper(UserMapper.class);//调用UserMapper接口中的方法就可以根据UserMapper的全类名匹配元素文件通过调用的方法名匹配映射文件中的SQL标签并执行标签中的SQL语句MapString,Object map new HashMap();map.put(usernane,张三1);map.put(password,123);User user userMapper.checkLoginByMap(map);System.out.println(user);
}实体类类型的参数
若mapper接口中的方法参数为实体类对象时此时可以使用${}和#{}通过访问实体类对象中的属性名获取属性值注意${}需要手动加单引号
!--int insertUser(User user);--
insert idinsertUserinsert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
/insertTest
public void insertUser() {......//这里之前省略的代码......User user new User(null,Tom,123456,123321.com,0);userMapper.insertUser(user);
}使用Param标识参数
可以通过Param注解标识mapper接口中的方法参数此时会将这些参数放在map集合中
1. 以Param注解的value属性值为键以参数为值
2. 以param1,param2...为键以参数为值只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号
!--User CheckLoginByParam(Param(username) String username, Param(password) String password);--select idCheckLoginByParam resultTypeUserselect * from t_user where username #{username} and password #{password}/selectTest
public void checkLoginByParam() {......//省略代码........userMapper.CheckLoginByParam(admin,123456);
}总结
建议分成两种情况进行处理
1. 实体类类型的参数
2. 使用Param标识参数