码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis快速学习(二)

时间:2015-04-03 15:17:44      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:mybatis

   对于mybatis应用的一些优化:

  •   可以把数据库配置文件放在一个单独的文件中,在mybatis的配置文件中引入就可以了例如:
       
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/jsky
    username=root
    password=123456
    在配置文件中引入:
    <!-- 引入配置文件 -->
    	<properties resource="db.propertities"/>
  •  为了不用每次都写全类名,可以在配置文件中为类创建别名:
    <!-- 指定別名 -->
    	<typeAliases >
    	<!-- 指定單個類的別名 -->
    	<!--   <typeAlias type="jsky.model.Student" alias="_Student"/> -->
    	  <!-- 指定某個包下所有類別名,默認直接類名 -->
    	  <package name="jsky.model"/>
    	</typeAliases>
  •  可以创建相关的工具类来帮助我们获取session
     
    public class MyBatisUtils {
     private static SqlSessionFactory factory;
      static
      {
    	  try {
    		InputStream is=Resources.getResourceAsStream("mybatis.xml");
    		  factory=new SqlSessionFactoryBuilder().build(is);
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
      }
      /**
       * 创建sqlsession
       * @return sqlsession
       */
      public static SqlSession getSession()
      {
    	  return factory.openSession();
      }
      /**
       * 关闭sqlsession
       * @param sqlSession sqlsession
       */
      public static void closeSession(SqlSession sqlSession)
      {
    	  
    	  if(sqlSession!=null)sqlSession.close();
      }
    }
    

  •  在应用时,可以为类设计DAO接口,而映射文件对该接口的方法实现数据库的操作
    StudentMapper.java
    public interface StudentMapper {
    
    	/**
    	 * 通過id獲取學生信息
    	 * @param id
    	 * @return
    	 */
    	Student getById(Integer id);
    	/**
    	 * 通過name獲取學生信息
    	 * @param name
    	 * @return
    	 */
    	Student getByName(String name);
    	/**
    	 * 獲取所有學生信息
    	 * @return
    	 */
    	List<Student> getAll();
    	/**
    	 * insert a student message
    	 * @param student
    	 */
    	void insert(Student student);
    	/**
    	 *delete a student
    	 * @param id
    	 */
    	void delete(Integer id);
    	/**
    	 * update a student message
    	 * @param student
    	 */
    	void update(Student student);
    }
    
    对应的配置文件:这里namespace填接口
    <mapper namespace="jsky.dao.StudentMapper">
            <select id="getById" parameterType="Integer" resultType="Student">
              select * from student where id=#{id}
            </select>
            <select id="getByName" parameterType="String" resultType="Student">
            select * from student where name=#{name}
            </select>
            <select id="getAll" resultType="Student">
             select * from student
            </select>
            <insert id="insert" parameterType="Student" useGeneratedKeys="true" keyProperty="id"  >
            insert into student(name,password,school) values(#{name},#{password},#{school}) 
            </insert>
            <delete id="delete" parameterType="Integer">
            delete student where id=#{id}
            </delete>
            <update id="update" parameterType="Student">
             update student set name=#{name},password=#{password},school=#{school} where id=#{id}
            </update>
            </mapper>

    mybatis会为这个接口自动提供实现。
  • 最后测试:
    	@Test
    	public void add()
    	{
    		SqlSession session=MyBatisUtils.getSession();
    		Student stu=new Student("張三", "121", "台灣小學");
    		StudentMapper mapper=session.getMapper(jsky.dao.StudentMapper.class);
    		Student st=mapper.getById(1);
    		System.out.println(st);
    		mapper.insert(stu);
    		session.commit();
    		MyBatisUtils.closeSession(session);
    	}

    对应的源码:



mybatis快速学习(二)

标签:mybatis

原文地址:http://blog.csdn.net/js_sky/article/details/44855283

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