mybatis(二)--相关属性及相关细节
mapper接口动态代理
动态代理dao开发规则
1.namespace必需是接口的全路径名
2.接口的方法名 必需与 映射文件的sql id一致
3.接口的输入参数必需与映射文件的parameterType类型一致
4.接口的返回类型必须与映射文件的resultType类型一致
动态代理dao开发步骤
1.创建xxxMapper.xml映射文件 编写SQL
2.创建UserMapper接口
3.加载UserMapper.xml
4.测试动态代理Dao
dao层代码
List<User> findUserByIds(QueryVo queryVo);
mapper映射xml
<select id="findUserByIds" parameterType="queryvo" resultType="user">
select * from `user`
<where>
<!-- and id in (1,2,3,4,5)
and id in (?,?,?,?,?) --> <!--foreach循环标签
collection : 要遍历的集合
item: 设置的循环变量
open: 循环开始之前输出的内容
close: 循环结束之后输出的内容
separator: 分隔符
-->
<foreach collection="ids" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</where>
Dao测试代码
Test
public void testGetUserById() {
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
// user.setId(10);
user.setUsername("张");
// List<User> orderList = userMapper.findUserList(user);
QueryVo queryVo = new QueryVo();
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(10);
list.add(26);
list.add(30);
queryVo.setIds(list);
List<User> userByIds = userMapper.findUserByIds(queryVo);
for (User user2 : userByIds) {
System.out.println(user2);
} sqlSession.close();
}
properties(属性)
属性核心文件配置
<properties resource="jdbc.properties">
<property name="jdbc.username" value="root"/>
<property name="jdbc.password" value="123456"/>
</properties>
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456
typeAliases(类型别名)


自定义别名
在SqlMapConfig.xml配置文件添加如下配置信息
1、单个别名配置
<!-- 配置pojo的别名 -->
<typeAliases> <typeAlias type="cn.tz.pojo.User" alias="user"/> </typeAliases>
2、包扫描别名配置
<!-- 配置pojo的别名 -->
<typeAliases>
<package name="cn.tz.pojo.User"/>
</typeAliases>
注意:resultType属性的值就是User类的别名,且别名是不区分大小写的。
SqlMapConfig.xml文件加载mapper.xml文件
Mapper(映射器)配置的几种方法:
1、<mapper resource=" " /> 使用相对于类路径的资源,如
<mapper resource="mybatis/user.xml"/>
2、<mapper class=" " /> 使用mapper接口类路径,如:
<mapper class="cn.xxx.UserMapper"/>
3、<package name=""/> 注册指定包下的所有mapper接口,如:
<package name="cn.tz.pojo.UserMapper"/>
注意:第二种和第三种的方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
虽然Mapper(映射器)配置有以上三种方法,但是实际开发中就用第三种方法
传递包装的pojo
pojo类中包含pojo类 -需求:根据用户id查询用户信息,查询条件放到QueryVo类的user属性中
步骤: 1、新建一个QueryVo类
public class QueryVo {
private User user;
private List<Integer> ids;
缺少get/set方法
}
2、映射文件中编写sql语句与配置
<!-- 加载配置文件 -->
<mappers>
<!-- <mapper resource="mybatis/user.xml"/> -->
<!-- <mapper resource="cn/xxx/mapper/UserMapper.xml"/> --> <!-- <mapper class="cn.tz.dao.UserMapper"/> --> <package name="cn.xxx.dao"/>
</mappers>
3、在对应接口中添加方法
@Select("select * from `order`")
List<Order> selAll();
4、编写单元测试
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
List<Order> selAll = orderMapper.selAll();
for (Order order : selAll) {
System.out.println(order);
}
mybatis(二)--相关属性及相关细节的更多相关文章
- PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解
本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...
- IOS开发UI基础UITextFidle相关属性
UITextFidle相关属性 • enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...
- cocos2dx 3.x以上(Sprite精灵类的相关属性与创建)
// // MainScene.cpp // helloworld // // Created by apple on 16/9/19. // // #include "MainSce ...
- css margin的相关属性,问题及应用
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=48 引言:margin ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新
配置中心是什么 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configu ...
- GSAP JS基础教程--TweenLite操作元素的相关属性
今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了. 代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...
- display属性的表格布局相关属性
基于CSS属性display:table的表格布局的使用 项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的tabl ...
- Scrapy框架-爬虫程序相关属性和方法汇总
一.爬虫项目类相关属性 name:爬虫任务的名称 allowed_domains:允许访问的网站 start_urls: 如果没有指定url,就从该列表中读取url来生成第一个请求 custom_se ...
随机推荐
- ip代理优化
如何保证可用ip不低于2000个,代理ip池优化策略 第一:获得大量ip: 第二:验证可用ip: 第三:监控可用ip: 第三:保证可用ip不低于3000或者5000: 截图是实时可用ip数量 心得:不 ...
- 从零开始unity特效(持续追加中)
打算重拾3d渲染了,计划把主要理论过一遍,每部分琢磨一个言之有物的demo. 因为很多东西要现学,再加上上班-8h,更新会比较慢,但会坚持. (待续) -------houdini+unity河流(2 ...
- 如何将自己写的verilog模块封装成IP核
如何将自己写的verilog模块封装成IP核 (2014-11-21 14:53:29) 转载▼ 标签: 财经 分类: 我的东东 =======================第一篇========= ...
- [lvs]lvs的三种模式
回顾了下lvs的三种模式的调度机制 1.lvs的dr模式中的arp的抑制,eth用自己口arp回应. 2.keepalive是否直接操作rs? 不直接操作, 只操作dr(配lvs) 3.tunnel模 ...
- C# 反射获取控件
Control control = Controls.Find(]; //object o = control.GetType().GetProperty("PropertyName&quo ...
- 物联网架构成长之路(30)-Spring Boot Admin微服务WebUI监控
0. 前言 一个完整的微服务解决方案包含了许多微服务,基于我们需要观察各个微服务的运行状态,因此Spring Boot 生态提供了Spring Boot Admin 这个组件来实现微服务管理WEB U ...
- Linux 开机启动顺序_005
***了解Linux开机启动顺序之前先了解一下Linux运行级别,通过inittab配置文件查看运行级别的定义: [root@oldboy ~]# cat /etc/inittab # Default ...
- [转] Android开发之如何保证Service不被杀掉(broadcast+system/app)
转发:原文链接http://blog.csdn.net/mad1989/article/details/22492519 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台 ...
- React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...
- xdebug php 运行效率分析工具
Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况. 官网:https://xdebug.org/index.php 安装方法: ht ...