1.mybatis动态sql
1.1 if
1.2 trim
trim:格式化标签 simpleDateFormart new date->是一个长整型
作用:构造可运行的sql语句
prifex:前缀
sufix:后缀
suffixOverrides:减除最后一个逗号
1.3 foreach
bookVo
package com.xxx.mybatis01.vo;
import com.xxx.mybatis01.model.Book;
import java.util.List;
/**
* @author Zhang
* vo层的母的在于不破坏原有的实体类与数据库的映射关系(结构关系)
*/
public class BookVo extends Book {
private List<Integer> bookIds;
public List<Integer> getBookIds() {
return bookIds;
}
public void setBookIds(List<Integer> bookIds) {
this.bookIds = bookIds;
}
}
1.4 其他
choose/set/where
2.模糊查询(3种方式)
2.1 参数中直接加入%%
2.2 使用${...}代替#{...}(不建议使用该方式,有SQL注入风险)
关键:#{...}与${...}区别?
参数类型为字符串,#会在前后加单引号['],$则直接插入值
注:
1) mybatis中使用OGNL表达式传递参数
2) 优先使用#{...}
3) ${...}方式存在SQL注入风险
2.3 SQL字符串拼接CONCAT
3.查询返回结果集
resultMap:适合使用返回值是自定义实体类的情况(非人为提供的类就是自定义的,也就是jdk提供的类)
resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型
3.1 使用resultMap返回自定义类型集合
3.2 使用resultType返回List<T>
3.3 使用resultType返回单个对象
3.4 使用resultType返回List<Map>,适用于多表查询返回结果集
3.5 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集
代码
bookMapper
/**
* 讲解foreach
* @param bookVo
* @return
*/
List<Book> list1(BookVo bookVo);
/**
* 讲解模糊查询
* 1、#{} ognl 传入的字符串自带''
* 2、${}占位符 如果没有''会报错 会形成sql注入
* 3、concat 拼接两个字符串
* @param book
* @return
*/
List<Book> list2(Book book);
/**
* 使用resultMap返回自定义类型集合
* @return
*/
List<Book> list3();
/**
* 使用resultType返回自定义类型集合List<T>
* @return
*/
List<Book> list4();
/**
* 使用resultType返回List<Map>,适用于多表查询返回结果集
* @return
*/
List<Map> list5();
/**
* 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集
* @param map
* @return
*/
Map list6(Map map);
/**
* 使用resultType返回单个对象
*/
Book selectByPrimaryKey(Integer bid);
bookMapper.xml
<resultMap id="BaseResultMap" type="com.xxx.mybatis01.model.Book" >
<constructor >
<idArg column="bid" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="bname" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="price" jdbcType="REAL" javaType="java.lang.Float" />
</constructor>
</resultMap>
<select id="list1" resultType="com.xxx.mybatis01.model.Book" parameterType="com.zking.mybatis01.vo.BookVo">
select
<include refid="Base_Column_List"/>
from t_mvc_book
where bid in
<foreach collection="bookIds" separator="," item="bid" open="(" close=")">
#{bid}
</foreach>
</select>
<select id="list2" resultType="com.xxx.mybatis01.model.Book" parameterType="com.zking.mybatis01.model.Book">
select
<include refid="Base_Column_List"/>
from t_mvc_book
where bname like concat(concat('%',#{bname}),'%')
</select>
<select id="list3" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from t_mvc_book
</select>
<select id="list4" resultType="com.xxx.mybatis01.model.Book">
select
<include refid="Base_Column_List"/>
from t_mvc_book
</select>
<select id="list5" resultType="java.util.Map">
select
<include refid