2020.5.17 随记
目录
- Mybatis返回类型
- Mybatis参数类型
- Mybatis转义字符
- Java日期处理
1. Mybatis返回类型
在mapper.xml文件中使用resultType关键字指定返回值类型,例如:
<select id="selectUserName" resultType="java.lang.String">
SELECT user_name FROM userInfo
</select>
resultType的返回类型可分为三大类:基本类型、List类型 、Map类型。
查询结果又可分为两种情况:单条记录、多条记录
最终返回的类型需要通过接口声明的方法返回值来判断!
当查询结果为单条记录时:
// mapper.xml 内容
<select id="selectUserName" parameterType='java.lang.Integer' resultType="xxx">
SELECT user_name FROM userInfo where id = #{id,jdbcType=INTEGER}
</select>
// 接口方法
public xxx selectUserName(@param("id")Integer i);
当
resultType = String
时,即返回一个字符串当
resultType = User
时,返回定义的类型对象User,一般用来查询指定的记录当
resultType = Map
时,返回一个Map对象,一个字段对应一个key
当查询结果为多条记录时:
当
resultType = 基本类型
时,需要看接口方法的返回类型是什么,可以返回一个List<基本类型>对象,也可以返回一个map对象,一般只用用于查询一个字段,例如:// mapper.xml 内容 <select id="selectUser" resultType="java.lang.String"> SELECT user_name FROM userInfo </select> //接口方法 //返回list public List<String> selectUser(); //返回map,一般这种返回方式常用于复杂类型,如下所述。 @MapKey("user_name")//不可省略,用来指明当作key的字段 public Map<String,String> selectUser();
当
resultType = 复杂类型
时,需要看接口方法的返回类型是什么,可以返回一个List<基本类型>对象,也可以返回一个map对象,一般只用用于查询整个记录,例如:// mapper.xml 内容 <select id="selectUser" resultType="com.dao.User"> SELECT * FROM userInfo </select> //接口方法 //返回list public List<User> selectUser(); //返回map @MapKey("user_name")//不可省略,用来指明当作key的字段 public Map<String,User> selectUser();
List与Map相互结合的特殊用法:
// mapper.xml 内容 <select id="selectUser" resultType="xxx.xxx.HashMap"> SELECT user_name,age FROM userInfo </select> //接口方法 //返回list,此时一个map只对应一条记录 public List<HashMap<String,Integer>> selectUser(); //返回map @MapKey("user_name")//不可省略,用来指明当作key的字段 public Map<String,HashMap<String,Integer>> selectUser();
1、基本类型 :resultType=基本类型
2、List类型 :resultType=List中元素的类型
3、Map类型 单条记录:resultType =map
多条记录:resultType =Map中value的类型
关于这一知识不错的博客https://www.cnblogs.com/pjfmeng/p/7688172.html
2. Mybatis参数类型
- 单个参数时,直接设置parameterType
parameterType="java.lang.String"
- 多个参数时,不设置parameterType
方式一:使用#{index}指明参数
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
</select>
方式二:在接口方法中使用@param("xxx")指明
//接口方法
public xxx selectUserName(@param("id")Integer i);
// mapper.xml 内容
<select id="selectUserName" parameterType='java.lang.Integer' resultType="xxx">
SELECT user_name FROM userInfo where id = #{id,jdbcType=INTEGER}
</select>
- Map对象为参数
//直接使用#{key}指明参数
<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
select 字段... from XXX where id=#{xxId} code = #{xxCode}
</select>
- List对象为参数
//使用foreach标签来遍历list
<select id="getXXXBeanList" resultType="XXBean">
select 字段... from XXX where id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
3. Mybatis转义字符
符号 | 小于 | 小于等于 | 大于 | 大于等于 | 和 | 单引号 | 双引号 |
---|---|---|---|---|---|---|---|
原符号 | < | <= | > | >= | & | ’ | " |
替换符号 | < | <= | > | >= | & | ' | " |
4. Java日期处理
String beginTime = "2020-5-17 22:41:31";
String endTime = "2020-5-18 22:41:31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date beginDate = sdf.parse(beginTime);
Date endDate = sdf.parse(endTime);
boolean isbefore = beginDate.before(endDate);