5、MyBatis输入输出映射
来源:互联网 发布:知乎阿波罗和雅典娜 编辑:程序博客网 时间:2024/06/09 22:23
一、输入映射
输入映射,是在映射文件中通过parameterType指定输入参数的类型,类型可以是简单类型、pojo、pojo的包装类型。
1.1、简单类型
使用#{}占位符或${}进行sql拼接。
1.1.1、根据id查找User
<select id="getUserById" parameterType="int" resultType="cn.xpu.hcp.bean.User"> select * from user where id = #{id}</select>
Mapper接口:
public interface UserMapper { public User getUserById(int id);}
测试:
public void MapperTest(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById(1); System.out.println(user); session.close();}
1.1.2、根据字符串模糊查找User列表
<!-- 模糊查询 --><select id="getLikeByName" parameterType="string" resultType="cn.xpu.hcp.bean.User"> select * from user where username like "%"#{value}"%"</select>
Mapper接口:
public interface UserMapper { public List<User> getLikeByName(String str);}
测试:
public void MapperTest(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); List<User> list = mapper.getLikeByName("张"); for (User user : list) { System.out.println(user); } session.close();}
1.2、输入POJO
MyBatis使用OGNL表达式解析对象字段的值,#{}或者${}中的值为POJO属性名称。
更新User
<!-- 更新 --><update id="updateUser" parameterType="cn.xpu.hcp.bean.User"> update user set username=#{username},birthday = #{birthday},sex = #{sex},address = #{address} WHERE id=#{id}</update>
Mapper接口:
public interface UserMapper { public void updateUser(User user);}
测试:
public void MapperTest(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById(1); user.setUsername("Jake"); mapper.updateUser(user);//先查找,再更新 session.commit(); session.close();}
1.3、输入POJO的包装类
根据UserWrapper类中的POJO(user)进行模糊查询。
包装类:
public class UserWrapper { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; }}
xml文件:
<select id="queryByWrapper" parameterType="cn.xpu.hcp.bean.UserWrapper" resultType="cn.xpu.hcp.bean.User"> select * from user where username like '%${user.username}%'</select>
Mapper接口:
public interface UserMapper { public List<User> queryByWrapper(UserWrapper wrapper); }
测试:
public void MapperTest(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); UserWrapper wrapper = new UserWrapper(); User user = new User(); user.setUsername("张"); wrapper.setUser(user); List<User> list = mapper.queryByWrapper(wrapper); for (User u : list) { System.out.println(u); } session.commit(); session.close();}
二、输出映射
MyBatis中输出映射有resultType和resultMap两种。
2.1、输出POJO对象
2.2、输出POJO列表
以上两种前面已经使用了。
2.3、resultType和resultMap
resultType可以指定将查询结果映射为POJO对象,但是,这需要表的列名和POJO的属性名相同才可以映射成功。
现在,我修改POJO的属性名:
我们继续使用resultType作为输出映射:
<select id="getUserById" parameterType="int" resultType="cn.xpu.hcp.bean.User"> select * from user where id = #{id}</select>
由于表名和属性名的不一致输出无法映射上,导致了空值。
这时我们就应该使用resultMap了,他可以将字段和属性名作一个对应关系。
<resultMap type="cn.xpu.hcp.bean.User" id="userMap"> <!-- id标签:定义主键 column:表中的列名 property:POJO中的属性名 --> <id column="id" property="userId"/> <!-- 普通属性 --> <result column="username" property="name"/></resultMap><select id="getUserById" parameterType="int" resultMap="userMap" > select * from user where id = #{id}</select>
成功建立了输出映射。
我认为在建立表和POJO时应该保证一致,避免麻烦。
阅读全文
3 0
- 5、MyBatis输入输出映射
- Mybatis总结(5)---Mybatis输入输出映射
- mybatis 输入输出映射
- mybatis中输入输出映射
- mybatis-03-输入输出映射
- Mybatis-Mapper.xml输入输出映射
- Mybatis-Mapper.xml输入输出映射
- mybatis框架(4)---输入输出映射
- MyBatis Review——输入输出映射
- Mybatis深入了解(四)----输入输出映射
- Mybatis深入了解(四)----输入输出映射
- MyBatis(三)配置文件,输入输出映射,动态SQL
- mybatis系列笔记(4)---输入输出映射
- mybatis系列笔记(4)---输入输出映射
- Mybatis的输入输出映射和全局配置文件
- Mybatis输入输出映射及动态sql
- Mybatis 输入输出映射和动态SQL
- mybatis学习四之输入输出映射以及动态sql
- MyBatis
- TensorFlow-CNN CIFAR-10数据集 学习
- GDI和CDC区别
- shell截取字符串的方法
- 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
- 5、MyBatis输入输出映射
- bin和sbin
- PowerDesigner的汉化破解安装到逆向工程(ORACLE)
- Mybatis 中的if test的坑
- 色域相关
- springmvcxml配置
- Threadlocal实现线程封闭
- vmware虚拟机NAT模式主机ping不通虚拟机解决方案
- 关于单选radio或多选按钮在form表单clear后attr赋值失败的问题