zoukankan      html  css  js  c++  java
  • MybatisDao

    一、mybatisDao的编写(原始方式,不用)

    1.接口编写

    public interface UserDao {
        public void save(User user);
        public User findUserById(int id);
    }

    2.实现类

    public class UserDaoImp implements UserDao {
        private SqlSessionFactory ssf;
    
        public UserDaoImp(SqlSessionFactory ssf) {
            this.ssf = ssf;
        }
    
        @Override
        public void save(User user) {
            SqlSession sqlSession = ssf.openSession();
            sqlSession.insert("insertUser", user);
            sqlSession.commit();
            sqlSession.close();
        }
    
        @Override
        public User findUserById(int id) {
            SqlSession sqlSession = ssf.openSession();
            User user = sqlSession.selectOne("insertUser", id);
            sqlSession.commit();
            sqlSession.close();
            return user;
        }
    }

    3.测试

    public class Demo03 {
        SqlSessionFactory sessionFactory;
        @Before
        public void before() throws IOException {
            //1.读取配置文件
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.通过SqlSessionFactoryBuilder创建SqlSessionFactory
            sessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSessionFactoty创建SqlSession
        }
        @Test
        public void test01(){
            UserDao dao = new UserDaoImp(sessionFactory);
            User user1 = dao.findUserById(1);
            System.out.println(user1);
    } }

    二、常用dao编写方式(Mapper代理方式)

           程序员只需要写mapper接口就行,mybatis会自动生成动态代理实现类

              开发规范:

    1. mapper接口的全限定名要和mapper映射文件的namespace的值相同。
    2. mapper接口的方法名称要和mapper映射文件中的statement的id相同;
    3. mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
    4. mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;

     第一步,编写接口

    public interface UserMapper {
        public int save(User user);//返回受影响的行数.
        public User findUserById(int id);
    
    }

    第二步,编写mapper.xml

    <mapper namespace="com.law.mapper.UserMapper">
        <!--namespace和接口名一样-->
        <insert id="save" parameterType="com.law.model.User">
            INSERT INTO user (username,sex,birthday,address) VALUE (#{username},#{sex},#{birthday},#{address})
        </insert>
        <select id="findUserById" parameterType="int" resultType="com.law.model.User">
            SELECT * FROM user WHERE id = #{id}
        </select>
    </mapper>

    配置到全局配置文件中

            <mapper resource="com/law/mapper/UserMapper.xml"></mapper>

    第三部,使用

    @Test
        public void test01(){
          UserMapper userMapper = session.getMapper(UserMapper.class);//默认jdk动态代理
            System.out.println(userMapper.findUserById(1));
            userMapper.save(new User("xxx","x", new Date(),"sichuan"));
    
        }

    三、配置Aliases(别名)

       <typeAliases>
            <!--<typeAlias type="com.gyf.model.User" alias="user"></typeAlias>-->
            <!--指定包名,别名就是类名,第一个小写 User 别名就是user-->
            <package name="com.law.model"></package>
            <package name="com.law.vo"></package>
        </typeAliases>

     四、配置文件加载的方式

        <mappers>
    
            <!--第一种:写映射文件的名字-->
            <!--<mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>-->
    
            <!--第二种:写类名,一定要有个映射文件与之对应
            如果没有,那么在UserMapper要声明注解-->
            <!--<mapper class="com.gyf.mapper.UserMapper"></mapper>-->
    
            <!--第三种:可以写包名-->
            <mapper resource="com/law/mapper/UserMapper.xml"></mapper>
        </mappers>
  • 相关阅读:
    模板方法设计模式
    单一职责原则
    开闭原则
    uml
    迭代器模式
    观察者模式
    工厂模式
    代理模式
    idea本地Maven仓库不能下载依赖jar包的解决方案
    selenium 使用教程详解-java版本
  • 原文地址:https://www.cnblogs.com/xiaolan-/p/11872111.html
Copyright © 2011-2022 走看看