目录
imp代码层:
与xml代码对应mapper:
在biz层写入相应的代码:
进行测试:
运行结果:
完整代码xml:
- <select id="selectByIn" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
- select
- <include refid="Base_Column_List" />
- from t_mvc_book
- where bid in
- <foreach collection="bookIds" open="(" close= ")" separator="," item="bid">
- #{bid}
- foreach>
- select>
mapper:
biz:
impl:
测试:
测试结果:#{...}用的是?(占位符)
mapper:
biz:
impl:
测试:
测试结果:${...}防sql注入
mapper:
biz:
impl:
测试:
测试结果:常用的方法为concat ------> concat(concat('%',?),'%')----->%?%
由上面的结果可得:
注意:#{...}自带引号,用占位符赋值,${...}有sql注入的风险
完整代码:
xml:
- <select id="selectBooksLike1" resultType="com.ruojuan.model.book" parameterType="java.lang.String">
- select * from t_mvc_book where bname like #{bname}
- select>
-
- <select id="selectBooksLike2" resultType="com.ruojuan.model.book" parameterType="java.lang.String">
- select * from t_mvc_book where bname like '${bname}'
- select>
-
- <select id="selectBooksLike3" resultType="com.ruojuan.model.book" parameterType="java.lang.String">
- select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
- select>
Mapper:
- List
selectBooksLike1(@Param("bname") String bname); - List
selectBooksLike2(@Param("bname") String bname); - List
selectBooksLike3(@Param("bname") String bname);
biz:
- public List
selectBooksLike1( String bname); - public List
selectBooksLike2( String bname); - public List
selectBooksLike3( String bname);
impl:
- @Override
- public List
selectBooksLike1(String bname){ -
- return bookMapper.selectBooksLike1(bname);
- };
- @Override
- public List
selectBooksLike2(String bname){ - return bookMapper.selectBooksLike2(bname);
-
- };
- @Override
- public List
selectBooksLike3(String bname){ - return bookMapper.selectBooksLike3(bname);
- };
-
test测试:
- @Test
- public void selectBooksLike1() {
-
- bookBiz.selectBooksLike1("%圣墟%").forEach(System.out::println);
- }
-
- @Test
- public void selectBooksLike2() {
- bookBiz.selectBooksLike2("%圣墟%").forEach(System.out::println);
-
- }
-
- @Test
- public void selectBooksLike3() {
- bookBiz.selectBooksLike3("圣墟").forEach(System.out::println);
-
- }
适合使用返回值是自定义实体类的情况
适合使用返回值的数据类型是非自定义的,即jdk的提供的类型
注意事项:使用resultMap返回自定义类型集合
使用resultType返回List
使用resultType返回单个对象
使用resultType返回List
使用resultType返回Map
xml:
- <select id="list1" resultMap="BaseResultMap">
- select * from t_mvc_book
- select>
- <select id="list2" resultType="com.ruojuan.model.book">
- select * from t_mvc_book
- select>
- <select id="list3" resultType="com.ruojuan.model.book" parameterType="com.ruojuan.model.BookVo">
- select * from t_mvc_book where bid in
- <foreach collection="bookIds" open="(" close=")" separator="," item="bid">
- #{bid}
- foreach>
- select>
- <select id="list4" resultType="java.util.Map">
- select * from t_mvc_book
- select>
- <select id="list5" resultType="java.util.Map" parameterType="java.util.Map">
- select * from t_mvc_book where bid = #{bid}
- select>
- //list1 list2的结论是 ,对于单表查询而言,可以用resultmap/resultType接收,但是多表必须用resultmap接收
- List
list1(); - List
list2(); - //如果要传入多个查询参数,必须以对象的方式进行传递
- List
list3(BookVo vo); - // 使用resultType返回List
- List
- // 使用resultType返回Map
,适用于多表查询返回单个结果集 - Map list5(Map map);
- //利用第三方插件进行分页
- List
- List
list1(); - List
list2(); - List
list3(BookVo vo); - List
- Map list5(Map map);
- @Override
- public List
list1(){ - return bookMapper.list1();
- }
-
- @Override
- public List
list2(){ - return bookMapper.list2();
- }
-
- @Override
- public List
list3(BookVo vo){ - return bookMapper.list3(vo);
- }
-
- @Override
- public List
- return bookMapper.list4();
- }
-
- @Override
- public Map list5(Map map){
- return bookMapper.list5(map);
- }
- @Test
- public void list1() {
- bookBiz.list1().forEach(System.out::println);
- }
-
- @Test
- public void list2() {
- bookBiz.list2().forEach(System.out::println);
- }
-
- @Test
- public void list3() {
- BookVo vo = new BookVo();
- vo.setBookIds(Arrays.asList(new Integer[]{31,32,33,34}));
- bookBiz.list3(vo).forEach(System.out::println);
- }
-
- @Test
- public void list4() {
- bookBiz.list4().forEach(System.out::println);
- }
-
- @Test
- public void list5() {
- Map map = new HashMap();
- map.put("bid",32);
- System.out.println(bookBiz.list5(map));
- }
测试结果:
Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量offset和边界limit取结果),在大数据量的情况下这样的分页基本上是没有用的
Pom依赖
<dependency>
|
Mybatis.cfg.xml配置拦截器
<plugins>
|
使用分页插件
<select id="listPager" resultType="java.util.Map" parameterType="java.util.Map">
|
Mapper层
List
|
Service层
List
|
@Override
|
>(>) <(<) &(&) 空格( )
|
相关代码配置
<select id="list6" resultType="com.javaxl.model.Book" parameterType="com.javaxl.model.BookVo">
|
/**
|