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 ...
随机推荐
- 动态绑定事件到特定dom元素上,包含新增加的
$('body').on('click', 'a.detail-data', function (e) { //动态事件绑定 为body元素下所有的a.detail-data元素添加一个事件 包括新增 ...
- python 执行sql得到字典格式数据
本文在提供一种方式,实现执行sql语句 返回字典结果集 # 连接数据库,数据库的,这里使用的setting中的默认设置,在这里不做具体的介绍,不懂的可以百度一下 conn = MySQLdb.conn ...
- .NET内存泄漏(之 静态事件)
一.事件引起的内存泄露 1.不手动注销事件也不发生内存泄露的情况 我们经常会写EventHandler += AFunction; 如果没有手动注销这个Event handler类似:EventHan ...
- [转]浅谈Normalize.css
原文地址:https://www.jianshu.com/p/3d21d1932aa0 Normalize.css只是一个很小的css文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性.相 ...
- 重新粗推了一下Master Theorem
主定理一般形式是T(n) = a T(n / b) + f(n), a >= 1, b > 1.递归项可以理解为一个高度为 logbn 的 a 叉树, 这样 total operation ...
- hdoj:2049
#include <iostream> using namespace std; ]; /* n 个 数中 m个错排 转化为:充n个数中选取m个数,共有C(n,m)中,选取的m个数进行全部 ...
- Laravel 添加路由文件
在laravel 5.4中的routes文件夹里面默认有两个路由文件web.php和api.php. 新建路由文件 我们在routes文件夹下多创建一个admin.php文件作为管理后台的路由 修改R ...
- 【ORACLE】解锁scott帐号
sqlplus / as sysdba;SQL> alter user scott account unlock;SQL> conn scott/grace
- 【GIS】Mapbox-json配置
1.json的MIME配置 application/json 问题:客户端浏览器不接受 MIME 类型的请求页面
- npm WARN install Refusing to install vue-router as a dependency of itself
今天在使用npm安装插件的时候提示如下错误: npm WARN install Refusing to install vue-router as a dependency of itself npm ...