栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis总结

Mybatis总结
  • 一、Mybatis使用步骤
      • 1.导入maven依赖pom.xml
      • 2.resources文件下的mybatis.xml
      • 3.Dao层下面的接口文件
      • 4.Dao层下面的xml文件
      • 5.utils下的工具文件
      • 6.测试使用mybatis查询数据
  • 二、使用详细
    • 1.直接使用
      • 2.使用一个或多个参数
      • 3.使用一个对象作为参数
      • 4.查询以某一项数据进行排序的数据
      • 5.ResultMap自定义返回数据类型
      • 6.模糊查询
        • 第一种方法,直接在xml文件里面加入前后的%,但是不推荐用这种方式
        • 第二种方法,在传参中用数据连接加入前后的%
      • 7.xml里面定义sql语句,可以做到代码复用
        • 这里的意思是定义一个语句或者语句片段,id是UserSqlOne,在下面select语句中加入 include refid="UserSqlOne"就可以直接使用定义的语句片段
      • 8.where和if的用法
        • 以下代码意思就是select * from t_user,然后传值user不是空,就在sql语句后面加上,where user=传值的user,如果user是空,sql语句就是select * from t_user。满足if条件就加上后续语句,where的作用是去掉没有用的or或者and,做到高容错。
      • 9.foreach使用
        • 传值为list《String》集,在xml中list表示传过来的值为list集,item是遍历每一个元素的值,比如下面java代码传过来的值就是[123, 123456, 1234566, 1234562],item就是123.123456.1234566.1234562,所以sql语句就是select * from t_user where `user` in ( 123.123456.1234566.1234562 ) ,separator是分隔符,open和close是开始和结束标志符。
        • foreach传list《User》集,其他代码不变,在xml和java代码里面稍微修改
      • 10.PageHelper分页请求
        • 分页请求本质就是在sql语句里面加limit,只是这个请求可以用pagehelper动态设置limit. PageHelper.startPage(1,3)意思是将数据分为每一页3条,比如我有10条数据,也就是一共4页,可以用for循环,1,3 2,3表示第一页,第二页

一、Mybatis使用步骤 1.导入maven依赖pom.xml

    4.0.0

    com.bjpowernode
    ch01-hello-mybatis
    1.0-SNAPSHOT
    
    
        UTF-8
        1.8
        1.8
    

    
        
            junit
            junit
            4.11
            test
        
        
        
            com.github.pagehelper
            pagehelper
            5.1.10
        
        
        
            org.mybatis
            mybatis
            3.5.1
        
        
        
            mysql
            mysql-connector-java
            5.1.9
        


    

    
        
            
                src/main/java
                
                    ***.xml
                
                false
            
        
    

2.resources文件下的mybatis.xml




    
    
        
        
    

    
    
        
        
            
            
            
            
                
                
                
                
                如果maven依赖是mysql 8.0版本或者以上的需要把下面改为
               jdbc:mysql://localhost:3306/user?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
                
                
                
                
                
            
        


        
        
            
            
                
                
                
                
            
        
    

    
    
        
        这里是需要用的Dao类的xml位置,如果需要多个就设置多个,如果都在这些xml文件都在Dao类下
        直接用/错误可以换成.
        
        
    


3.Dao层下面的接口文件
//接口操作student表
public interface UserDao {

    //查询student表的所有的数据
    public List selectUsers();
    public List selectAllUuser();
    public List selectAllUuser1();
    public List selectLike(String user);
    public List selectForIf(User user);
    public List selectFirstIf(User user);
    public List selectForeachOne(List userList);


    //插入方法
    //参数: student ,表示要插入到数据库的数据
    //返回值: int , 表示执行insert操作后的 影响数据库的行数
    public int insertUser(User user);
    public User selectByUser(String user);
    public List selectMultiPara(@Param("myUser") String user,@Param("myKey") String key);
    public int selectForObject(User user);
    public List selectOrder(@Param("colName") String colName);

}
4.Dao层下面的xml文件



    
    
        SELECT * FROM t_user where `user`=#{user}
    
    
        SELECT count(*) from t_user where`user`=#{user}  or `key`=#{key}
    
    
        select `user` AS SIUSER,`key` AS SIKEY from t_user
    

    
        
        
        
        

    
    
        select * from  t_user where `user` like "%" #{myuser} "%"
    

    
    `user`,`key`


    

    
    
        SELECT * FROM t_user
    
    public List selectUsers();

在xml里面,resultType是返回值,这里我设置的返回值

2.使用一个或多个参数
    
        SELECT count(*) from t_user where`user`=#{user}  or `key`=#{key}
    
       public int selectForObject(User user);
4.查询以某一项数据进行排序的数据
    
        select `user` AS SIUSER,`key` AS SIKEY from t_user
    
    public List selectAllUuser();
    
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao dao = sqlSession.getMapper(UserDao.class);
        List userList = dao.selectAllUuser();
        for(User user : userList)
        {
            System.out.println(user);
        }
        sqlSession.close();

这里的column需要和数据库里面的数据列名一致,property需要和Bean层下面的User类数据一致,查询的返回值就是Bean层下的User类。

6.模糊查询 第一种方法,直接在xml文件里面加入前后的%,但是不推荐用这种方式
    
        select * from  t_user where `user` like  #{myuser} 
    
 SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao dao = sqlSession.getMapper(UserDao.class);
        String sql = "%"+"123"+"%";
        List userList = dao.selectLike(sql);
        for(User user : userList)
        {
            System.out.println(user);
        }
        sqlSession.close();
7.xml里面定义sql语句,可以做到代码复用 这里的意思是定义一个语句或者语句片段,id是UserSqlOne,在下面select语句中加入 include refid="UserSqlOne"就可以直接使用定义的语句片段
    
    `user`,`key`
	
    

这里的user是一个数据类,类里面有个user数据,一般都是传类过去。

public List selectForIf(User user);
9.foreach使用 传值为list《String》集,在xml中list表示传过来的值为list集,item是遍历每一个元素的值,比如下面java代码传过来的值就是[123, 123456, 1234566, 1234562],item就是123.123456.1234566.1234562,所以sql语句就是select * from t_user where user in ( 123.123456.1234566.1234562 ) ,separator是分隔符,open和close是开始和结束标志符。
 
        select * from t_user where `user` in
        
            #{user}
        

    
      public List selectForeachOne(List userList);

        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao dao = sqlSession.getMapper(UserDao.class);
        List users = new ArrayList();
        users.add("123");
        users.add("123456");
        users.add("1234566");
        users.add("1234562");
        List userList = dao.selectForeachOne(users);
        for(User user : userList)
        {
            System.out.println(user);
        }
        sqlSession.close();
foreach传list《User》集,其他代码不变,在xml和java代码里面稍微修改
    
      SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);

        List stuList  = new ArrayList<>();
        Student s1 = new Student();
        s1.setId(1002);
        s1.setName("lisi");
        stuList.add(s1);

        s1 = new Student();
        s1.setId(1005);;
        s1.setName("zs");
        stuList.add(s1);

        List students = dao.selectForeachTwo(stuList);
        for(Student stu:students){
            System.out.println("foreach--two ==="+stu);
10.PageHelper分页请求 分页请求本质就是在sql语句里面加limit,只是这个请求可以用pagehelper动态设置limit. PageHelper.startPage(1,3)意思是将数据分为每一页3条,比如我有10条数据,也就是一共4页,可以用for循环,1,3 2,3表示第一页,第二页
    
    
 SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao  =  sqlSession.getMapper(StudentDao.class);
        //加入PageHelper的方法,分页
        // pageNum: 第几页, 从1开始
        // pageSize: 一页中有多少行数据
        PageHelper.startPage(1,3);
        List students = dao.selectAll();
        for(Student stu:students){
            System.out.println("foreach--one ==="+stu);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号