java-mybaits-00401-Mapper-输入输出
1、parameterType(输入类型)
1.1、#{}与${}
<!-- 根据id查询用户信息 -->
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
<!-- 根据名称模糊查询用户信息 -->
<select id="selectUserByName" parameterType="string" resultType="user">
select * from user where username like '%${value}%'
</select>
//如果使用#{}占位符号则必须人为在传参数中加%
List<User> list = userMapper.selectUserByName("%管理员%");
//如果使用${}原始符号则不用人为在参数中加%
List<User>list = userMapper.selectUserByName("管理员");
1.2、传递简单类型
1.3、传递pojo对象
<!—传递pojo对象综合查询用户信息 -->
<select id="findUserByUser" parameterType="user" resultType="user">
select * from user where id=#{id} and username like '%${username}%'
</select>
1.4、传递pojo包装对象
1.4.1、定义包装对象
package com.lhx.mybatis.po; public class QueryVo {
private User user;
// 自定义用户扩展类
private UserCustom userCustom;
private String ordercode;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserCustom getUserCustom() {
return userCustom;
}
public void setUserCustom(UserCustom userCustom) {
this.userCustom = userCustom;
}
public String getOrdercode() {
return ordercode;
}
public void setOrdercode(String ordercode) {
this.ordercode = ordercode;
} }
如果用户需要扩展
package com.lhx.mybatis.po; public class UserCustom extends User {
private String phone; public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} }
1.4.2 mapper.xml映射文件
<select id="findUserList" parameterType="com.lhx.mybatis.po.QueryVo"
resultType="com.lhx.mybatis.po.User">
select * from user where #{user.username} and sex=#{user.sex}
</select>
select * from user where sex=#{user.sex} and username like '%${user.username}%'
1.4.3、编写Mapper
public List<User> findUserList(QueryVo queryVo) throws Exception;
1.5、传递hashmap
<!-- 传递hashmap综合查询用户信息 -->
<select id="findUserByHashmap" parameterType="hashmap" resultType="com.lhx.mybatis.po.User">
select * from user where id=#{id} and username like '%${username}%'
</select>
public void testFindUserByHashmap() throws Exception {
// 获取session
SqlSession session = sqlSessionFactory.openSession();
// 获限mapper接口实例
UserMapper userMapper = session.getMapper(UserMapper.class);
// 构造查询条件Hashmap对象
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("id", 1);
map.put("username", "管理员"); // 传递Hashmap对象查询用户列表
List<User> list = userMapper.findUserByHashmap(map);
// 关闭session
session.close();
}
2、resultType(输出类型)
2.1 输出简单类型
<!-- 获取用户列表总数 -->
<select id="findUserCount" parameterType="user" resultType="int">
select count(1) from user
</select>
public int findUserCount(User user) throws Exception;
public void testFindUserCount() throws Exception{
//获取session
SqlSession session = sqlSessionFactory.openSession();
//获取mapper接口实例
UserMapper userMapper = session.getMapper(UserMapper.class); User user = new User();
user.setUsername("管理员"); //传递Hashmap对象查询用户列表
int count = userMapper.findUserCount(user); //关闭session
session.close();
}
2.2 输出pojo对象
<!-- 根据id查询用户信息 -->
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
public User findUserById(int id) throws Exception;
public void testFindUserById() throws Exception {
//获取session
SqlSession session = sqlSessionFactory.openSession();
//获限mapper接口实例
UserMapper userMapper = session.getMapper(UserMapper.class);
//通过mapper接口调用statement
User user = userMapper.findUserById(1);
System.out.println(user);
//关闭session
session.close();
}
2.3 输出pojo列表
<!-- 根据名称模糊查询用户信息 -->
<select id="findUserByUsername" parameterType="string" resultType="user">
select * from user where username like '%${value}%'
</select>
public List<User> findUserByUsername(String username) throws Exception;
测试:
public void testFindUserByUsername()throws Exception{
//获取session
SqlSession session = sqlSessionFactory.openSession();
//获限mapper接口实例
UserMapper userMapper = session.getMapper(UserMapper.class);
//如果使用占位符号则必须人为在传参数中加%
//List<User> list = userMapper.selectUserByName("%管理员%");
//如果使用${}原始符号则不用人为在参数中加%
List<User> list = userMapper.findUserByUsername("管理员");
//关闭session
session.close();
}
2.4 resultType总结:
2.5 输出hashmap
3、resultMap
3.1 Mapper.xml定义
<select id="findUserListResultMap" parameterType="com.lhx.mybatis.po.QueryVo"
resultMap="userListMap">
select id id_,username username_ from user where
#{user.username} and
sex=#{user.sex}
</select>
使用resultMap指定上边定义的personmap。
3.2 定义resultMap
<resultMap type="com.lhx.mybatis.po.User" id="userListMap">
<id column="id_" property="id"></id>
<result column="username_" property="username"></result>
</resultMap>
<id />:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个<id />。
Property:表示类的属性。
Column:表示sql查询出来的字段名。
Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。
<result />:普通结果,即pojo的属性。
3.3 Mapper接口定义
public List<User> findUserListResultMap(QueryVo queryVo) throws Exception;
3.4 测试
public void testFindUserListResultMap() throws Exception {
// 获取session
SqlSession session = sqlSessionFactory.openSession();
// 获限mapper接口实例
UserMapper userMapper = session.getMapper(UserMapper.class);
QueryVo queryVo = new QueryVo();
User user = new User();
user.setUsername("张");
user.setSex("女");
queryVo.setUser(user);
// 传递Hashmap对象查询用户列表
List<User> list = userMapper.findUserListResultMap(queryVo);
// 关闭session
session.close();
}
小结
java-mybaits-00401-Mapper-输入输出的更多相关文章
- Mybaits之Mapper动态代理开发
Mybaits之Mapper动态代理开发 开发规范: Mapper接口开发方法只需要程序员与Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法 ...
- mybits根据表自动生成 java类和mapper 文件
mybits根据表自动生成 java类和mapper 文件 我这个脑子啊,每次创建新的工程都会忘记是怎么集成mybits怎么生成mapper文件的,so today , I can't write t ...
- IDEA中MyBaits的Mapper文件颜色问题
IDEA中MyBaits的Mapper文件颜色问题 在IDEA中Mapper文件的展示 包含的警告及其解决方案 然后我们就完成了,效果如下 在IDEA中Mapper文件的展示 在IDEA中,Mappe ...
- Java I/O流输入输出,序列化,NIO,NIO.2
Java IO流 File类: File类是java.io包下代表和平台无关的文件和目录,File不能访问文件内容本身. File类基本操作: System.out.println("判断文 ...
- 【java】System成员输入输出功能out、in、err
package System输入输出; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOu ...
- java SE 入门之输入输出(第四篇)
在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ...
- java ssm框架 mapper文件里的#符号和$符号的区别
Java SSM框架里面,Mapper.xml文件 (一)#符号生成的sql语句是作为传参的 <!-- 获得数据列表(包括课程相关信息) --> <select id="G ...
- Java IO之简单输入输出
Java中的IO分为两个部分,以InputStream和Reader为基类的输入类,以OutputStream和Writer为基类的输出类. 当中InputStream和OutputStream以字节 ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- Java基础语法<三> 输入输出
1. 读取输入 Scanner in = new Scanner(System.in); 输入一行(包含空格) String str = in.nextLine() 读取一个单词(以空白符作为 ...
随机推荐
- Android基础总结(三)SQLite,ListView,对话框
测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...
- docker 容器内ping不通外网
其实只要重启docker就好了 systemctl restart docker https://blog.csdn.net/yangzhenping/article/details/43567155
- php接入域账号登陆代码
php接入域账号登陆代码 //替换本地登录为AD域用户认证//edit by ZhangJin on 2015-05-23 -START-$dn = $user_account.'@fun ...
- Dubbo (开源分布式服务框架)
Provider 暴露服务方称之为“服务提供者”. Consumer 调用远程服务方称之为“服务消费者”. Registry 服务注册与发现的中心目录服务称之为“服务注册中心”. Monitor 统计 ...
- COUNT() 函数返回匹配指定条件的行数。
SQL COUNT() 语法 SQL COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入): SELECT COUNT(col ...
- ti8168平台的tiler memory
DM8168 DMM/TILER简介 1.概述 如图4-1,DMM定位在SDRAM控制器的前端,是所有initiator产生的内存存取的接口. 动态内存管理器DMM,是一个专门的管理模块,广义上说,包 ...
- TPS和事务响应时间的关系
例子:一个高速路有10个入口,每个入口每秒钟只能进1辆车 1.请问1秒钟最多能进几辆车? TPS=10 2.每辆车需要多长时间进行响应? reponse time = 1 3.改成20辆车 ...
- TClientDataSet数据源设置
TClientDataSet数据源设置 TClientDataSet数据源设置
- JZOJ.5288【NOIP2017模拟8.17】球场大佬
Description 每天下午,古猴都会去打羽毛球.但是古猴实在是太强了,他必须要到一些比较强的场去打.但是每个羽毛球场都有许多的人排着队,每次都只能上四个人,每个人都有自己的能力值,然 ...
- iOS 按钮文字加划掉线
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; NSDictionary *normalTitleAttribu ...