码迷,mamicode.com
首页 > 移动开发 > 详细

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

时间:2018-02-22 22:32:25      阅读:736      评论:0      收藏:0      [点我收藏+]

标签:--   include   方法   path   实现类   ar9   dao   where   find   

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

简单概述一下本讲

别名,sql片段简单写一下,模糊查询多写一点

 

一。别名

  

<typeAliases>
        <!--第一种-->
        <!--<typeAlias type="cn.dawn.demo01.entity.Book" alias="book"></typeAlias>-->
        <!--第二种-->
        <package name="cn.dawn.demo01.entity"></package>
    </typeAliases>

 

  别名写在大配置中

 

二。sql片段

   在开发过程中一般不直接使用*作为sql的查询语句的列,因为会损耗性能严重,在多次,重复使用列名,但是列名太多,所以很麻烦,怎么解决?

  sql片段

 

  怎么使用?

  如下:

<sql id="mysql">
        bookId,bookName,bookAuthor,bookPrice
    </sql>
<select id="findOneBookByPK" resultType="Book" >
        SELECT <include refid="mysql"/> FROM book WHERE bookid=#{bookID}
    </select>

 

  用include将sql片段中的列名引用过去

 

三。模糊查询

  dao层

  

//模糊查询
    public List<Book> likeSelect(String bookName);

 

  小配置中

<sql id="mysql">
        bookId,bookName,bookAuthor,bookPrice
    </sql>
<!--模糊查询-->
    <!--不可以防止sql注入
    <select id="likeSelect" parameterType="string" resultType="Book">
        SELECT * FROM book WHERE bookName LIKE %${value}%
    </select>-->
    <!--可以防止sql注入
    <select id="likeSelect" parameterType="string" resultType="Book">
        SELECT * FROM book WHERE bookName LIKE % #{value} %
    </select>-->
    <!--可以防止sql注入-->
    <select id="likeSelect" parameterType="string" resultType="Book">
        SELECT <include refid="mysql"/> FROM book WHERE bookName LIKE concat(%,#{bookName},%)
    </select>

  三种方式,第一种不可以防止sql注入(做完日志整合的从控制台就可以看到sql语句),我所喜欢的是第二种

  测试类中

//模糊查询
    @Test
    public void t6likeSelect(){

        String path = "mybatis-config.xml";

        try {
            InputStream e = Resources.getResourceAsStream(path);
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = builder.build(e);
            SqlSession session = factory.openSession();

            IBookDAO mapper = session.getMapper(IBookDAO.class);
            List<Book> list = mapper.likeSelect("");
            for (Book item:list) {
                System.out.println(item.getBookName());
            }


            session.close();
        } catch (IOException var9) {
            var9.printStackTrace();
        }
    }

 

 

 

  这儿模糊查询就搞定了,说说getMapper吧,

  之前我那几篇博客,用的原始方式,他要求自己测试类中手打方法,但是现在这种通过session.getMapper(dao层接口.class)反射的方式获取到了dao层这个接口的实现类,所以就可以使用强类型

的方式,直接通过点的方式点出来供你选择,出错几率大大减少      例如mapper.findAll()

 

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

标签:--   include   方法   path   实现类   ar9   dao   where   find   

原文地址:https://www.cnblogs.com/DawnCHENXI/p/8460302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!