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 ...
随机推荐
- 认知:关于Android 调试的坑
要注意充电线和数据线的区别! 要注意充电线和数据线的区别! 要注意充电线和数据线的区别! 可以通过访问 :chrome://inspect/#devices 查看设备是否正常. 通常电脑也会有提示, ...
- webpack2.x抽取css
这里以.vue文件为例,需要安装extract-text-webpack-plugin包 我们主要设置的文件是webpack.config.js文件. 抽取成一个css文件 这个设置是提取成一个单独的 ...
- caffe可重入单例机制分析
一个函数可重入是指该函数可以被多个线程同时调用.大多数函数都不是可重如的,因为很多函数会修改静态数据结构里的内容,如果多个线程同时调用,势必破坏共享的静态结构.可以在不改变公共接口的情况下,将一个非重 ...
- 解决AndroidStudio导入项目卡在gradle加载界面
为了节省排版时间,直接上图了,图片若看不清,可在新标签中打开查看. 文中图片上涉及到的一些链接如下: maven { url 'http://maven.aliyun.com/nexus/conten ...
- HttpWebRequest 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
请求对象前加入 ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate; 然后实现该方法 ...
- oracle查看某表字段类型
来源:https://www.cnblogs.com/ufindme/p/5033843.html 今天遇到一个问题:要求在可重复执行的SQL脚本添加一段SQL代码:修改当前的数据类型.因为SQL代码 ...
- 利用Navicate把SQLServer转MYSQL的方法(连数据)
中文乱码问题:https://pqcc.iteye.com/blog/661640 本次转换需要依赖使用工具Navicat Premium. 首先,将数据库移至本地SQLServer,我试过直接在局域 ...
- JavaScript 字符串与json对象互转的几种方法
第一种:浏览器支持的转换方式(Firefox,chrome,opera,safari,ie)等浏览器: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON. ...
- 【Qt】信号和槽对值传递参数和引用传递参数的总结
在同一个线程中 当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别: 值传递会复制对象:(测试时,打印传递前后的地址不同) 引用传递不会复制对象:(测试时,打印传递前后的地址相同) 不在同一 ...
- laravel5.8笔记八:数据库(单库和多库)
数据库配置:根目录下/.env, 单个数据库 .env配置 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT= DB_DATABASE=shop DB_USE ...