• mybatis-java代码调用部分


     只需要加入 mybatis-2.2.jar  和数据库驱动包即可

    java代码实现的步骤

    package com.yangwei.shop.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import com.yangwei.shop.entity.User;
    import com.yangwei.shop.util.MyBatisUtil;
    
    public class TestMybatis {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            
            try {
                //1,创建主配置文件输入流(mybatis-config.xml)
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                //2,创建SQLSessionFactory
                SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
                //3,创建SqlSession
                SqlSession session = factory.openSession();
                //4,调用mapper文件插入数据(mapper文件必须加入到mybatis-config.xml中)
                User user = new User();
                user.setUsername("zhangsan");
                user.setPasswd("123456");
                user.setNickname("shengqishi");
                user.setType(2);
                //参数1: mapper的namespace+具体方法的id
                session.insert("com.yangwei.shop.entity.User.add",user);
                session.commit();
                session.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
        
      
    }

    Mybatis工具类

    package com.yangwei.shop.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class MyBatisUtil {
        private static SqlSessionFactory factory;
        static {
            try {
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                factory = new SqlSessionFactoryBuilder().build(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        public static SqlSession createSession() {
            return factory.openSession();
        }
        
        public static void closeSession(SqlSession session) {
            if(session!=null) session.close();
        }
    }

    有了工具类之后,操作变的简单

    public static void testAdd(){
            SqlSession session=null;
            
            try {
                User user = new User();
                user.setUsername("zhangsan");
                user.setPasswd("123456");
                user.setNickname("shengqishi");
                user.setType(2);
                
                session = MyBatisUtil.createSession();
                //此时,mapper文件的namespace与类的全路径需一致
                session.insert(User.class.getName()+".add", user);
                
                session.commit();
            } catch (Exception e) {
                e.printStackTrace();
                session.rollback();
            }finally{
                MyBatisUtil.closeSession(session);
            }
        }
        
        public static void testLoad(){
            SqlSession session=null;
            
            try {
                session = MyBatisUtil.createSession();
                //此时,mapper文件的namespace与类的全路径需一致
                User u=session.selectOne(User.class.getName()+".load", 1);
                System.out.println(u.getNickname());
            } finally{
                MyBatisUtil.closeSession(session);
            }
        }

    我们发现,前面的session.insert(),session.selectOne()等等,第一个参数是一个很麻烦的字符串,为了改善这个,有了基于mapper的方式

    步骤1,需要写为每一个写mapper接口,例如:
    package
    com.yangwei.shop.mapper; import com.yangwei.shop.entity.User; import java.util.List;
    public interface UserMapper { //这个接口中的方法,对应于mapper.xml中的标签 public void add(User user); public void update(User user); public void delete(int id); public User load(int id); public List<User> list(); }
    步骤二: mapper.xml的namespace必须是这个接口的全路径,如

    <mapper namespace="com.yangwei.shop.mapper.UserMapper">

    步骤三:java代码调用的时候,按照如下写法

    UserMapper mapper = session.getMapper(UserMapper.class);
    mapper.add(user);

     两种方式都要知道,建议使用第一种,虽然是字符串...

    下面两种方式 : "获取所有User的调用"

    public
    static void testList(){ SqlSession session=null; try { session = MyBatisUtil.createSession(); //注意这样使用的时候,mapper.xml的namespace必须是实体类全路径 List<User> users=session.selectList(User.class.getName()+".list", null); System.out.println(users.size()); } finally{ MyBatisUtil.closeSession(session); } } public static void testListByMapper(){ SqlSession session=null; try { session = MyBatisUtil.createSession(); //注意这样使用的时候,mapper.xml的namespace必须是Mapper接口全路径 List<User> users=session.getMapper(UserMapper.class).list(); System.out.println(users.size()); } finally{ MyBatisUtil.closeSession(session); } }

     最后最简洁的方式,不使用mapper.xml这样的配置文件,采用注解的形式

    package com.yangwei.shop.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import com.yangwei.shop.entity.User;
    //这个接口中的方法,对应于mapper.xml中的标签
    public interface UserMapper {
    
        
        @Insert("insert into t_user(username,password,nickname,type) values(#{username},#{password},#{nickname},#{type})")
        public void add(User user);
        @Update("update t_user set password=#{password},nickname=#{nickname},type=#{type} where id=#{id}")
        public void update(User user);
        @Delete("delete from t_user where id=#{id}")
        public void delete(int id);
        @Select("select * from t_user where id=#{id}")
        public User load(int id);
        @Select("select * from t_user")
        public List<User> list();
    }

    此时在主配置文件mybatis-config.xml中引入的是这个接口,使用class属性
    <mapper class="com.yangwei.shop.mapper.UserMapper" />
    最佳实践(孔老师建议):
    1,创建相应的MybatisUtil工具类,完成对session的获取;
    2,不使用annotation完成对sql映射;
    3,建议使用基于sql访问而不要使用基于Mapper
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    struts的action直接输出中文备注【原创】
    iframe高度处理【原创】
    Gel备注【原创】
    关于用jsp生成xml的问题【原创】
    网上流行的flash切换图片之研究【原创】
    c#连mysql的latin1编码乱码问题
    windows phone 7图片搜索小工具(源码)
    家猫js类库
    理解c#中的readonly,const与enum枚举
    Silverlight 雷达图和一种特殊泡泡画法
  • 原文地址:https://www.cnblogs.com/xin1006/p/3314703.html
Copyright © 2020-2023  润新知