mybatis详解(二)
来源:互联网 发布:美国航空怎么样知乎 编辑:程序博客网 时间:2024/06/03 03:16
一、动态SQL之if标签:
<!-- 动态SQL语句 --><select id="findUserByNameAndIdNumber" parameterType="com.milan.entity.User" resultType="com.milan.entity.User">select * from t_user<where><if test="username != null and username != ''">and username like '%${username}%'</if><if test="idNumber != null and idNumber != ''">and idNumber = #{idNumber}</if></where></select>
可以将where条件封装到sql标签中,以备其他select标签重用
<!-- 动态SQL语句 --><select id="findUserByNameAndIdNumber" parameterType="com.milan.entity.User" resultType="com.milan.entity.User">select * from t_user<include refid="user_where"></include></select><!-- 封装SQL条件,以备重用 --><sql id="user_where"><where><if test="username != null and username != ''">and username like '%${username}%'</if><if test="idNumber != null and idNumber != ''">and idNumber = #{idNumber}</if></where></sql>
二、动态SQL之foreach标签:
<!-- foreach标签:主要应用于sql中的in条件collection:对应parameterType中的参数item:字段名open:条件前缀close:条件后缀separator:每个参数的分隔符 --><select id="findUserByIds" parameterType="com.milan.entity.Parameters" resultType="com.milan.entity.User">select * from t_user<where><foreach collection="parameters" item="id" open="id in(" close=")" separator=",">#{id}</foreach></where></select>对应的Parameters类:
/** * 参数类 * @author Clark */public class Parameters {private String parameter;private List<Integer> parameters;public String getParameter() {return parameter;}public void setParameter(String parameter) {this.parameter = parameter;}public List<Integer> getParameters() {return parameters;}public void setParameters(List<Integer> parameters) {this.parameters = parameters;}}测试类:
@Testpublic void getUserByIds() throws Exception{String resource ="SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //创建SqlSessionFactory SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); //创建SqlSession SqlSession sqlSession = factory.openSession(); //调用SqlSession的增删改查方法 UserMapper mapper = sqlSession.getMapper(UserMapper.class);Parameters parameters = new Parameters();List<Integer> i = new ArrayList<>();i.add(1);i.add(3);parameters.setParameters(i);List<User> userlist = mapper.findUserByIds(parameters);System.out.println(userlist);sqlSession.close();}
三、单个对象映射关系:
<resultMap type="com.milan.entity.UserOrder" id="orderAndUserResultMap"><id column="id" property="id" /><result column="userId" property="userId" /><result column="goodId" property="goodId" /><result column="goodNumber" property="goodNumber" /><result column="discount" property="discount" /><result column="createTime" property="createTime" /><result column="describe" property="describe" /><!-- association:表示单个对象的对应关系property:表示UserOrder中的User属性javaType:表示User的属性类型 --><association property="user" javaType="com.milan.entity.User"><id column="uid" property="id" /><result column="username" property="username" /><result column="password" property="password" /><result column="idNumber" property="idNumber" /><result column="vip" property="vip" /><result column="score" property="score" /><result column="ucreateTime" property="createTime" /><result column="lastLoginTime" property="lastLoginTime" /></association></resultMap><!-- 手动映射 --><select id="findOrderAndUser" resultMap="orderAndUserResultMap">SELECT o.*, u.id AS uid,username,password,idNumber,vip,score,u.createTime AS ucreateTime,lastLoginTimeFROM t_userOrder o,t_user u WHERE o.userId = u.id;</select>
四:集合对象映射:
resultMap type="com.milan.entity.User" id="UserAndOrderResultMap"><id column="id" property="id" /><result column="username" property="username" /><result column="password" property="password" /><result column="idNumber" property="idNumber" /><result column="vip" property="vip" /><result column="score" property="score" /><result column="ucreateTime" property="createTime" /><result column="lastLoginTime" property="lastLoginTime" /><!-- 指定集合对象关系映射 --><collection property="userOrder" ofType="com.milan.entity.UserOrder"><id column="oid" property="id" /><result column="userId" property="userId" /><result column="goodId" property="goodId" /><result column="goodNumber" property="goodNumber" /><result column="discount" property="discount" /><result column="ocreateTime" property="createTime" /><result column="describe" property="describe" /></collection></resultMap><select id="findUserAndOrder" resultMap="UserAndOrderResultMap">SELECT u.*,o.id as oid,userId,goodId,goodNumber,discount,o.createTime as ocreateTime,`describe` from t_user as u,t_userOrder as o where u.id = o.userId</select>
0 0
- mybatis详解(二)
- MyBatis学习二 MyBatis的配置文件详解
- Mybatis实战(二)配置文件详解
- MyBatis教程之二的配置文件详解
- SSM框架mybatis 详解二 No.7
- mybatis学习(二)-- mybatis-config.xml配置文件详解
- MyBatis动态sql详解(二) foreach语句详解
- Mybatis XML 文件的学习详解(二)
- Mybatis源码分析(二)- SqlSessionFactory和SqlSession详解
- MyBatis学习笔记(二)--配置环境详解
- Mybatis(二)
- Mybatis二
- mybatis(二)
- Mybatis学习笔记(二)-Mybatis配置文件与映射文件详解
- MyBatis 详解
- Mybatis详解
- MyBatis详解
- mybatis详解
- POJ3253 Fence Repair (HDU 1263 搬水果)
- PHP Study
- IS_REACHABLE
- android-webView拉起其他应用程序
- Eclipse 使用Maven
- mybatis详解(二)
- bcd与hex转换、以及编码格式
- [nRF51822] 16、nRF51822的随机数生成器,及随机数生成器的一些知识(可以帮您补补随机数发生器的知识)_0
- affe训练cifar10遇到./build/tools/caffe: not found 错误解决方法
- java 多线程 volatile 关键字分析
- TextRank算法解析和scala代码实现
- VTK修炼之道28:图像统计_灰度直方图计算
- 总结一些iOS项目中组织代码的方法
- Stanford NER CRF FAQ