mybatis学习(一) mybatis入门

       mybatis(3.3.1version)是一个比较轻量级的O/R Mapping框架,跟Hibernate对比安装和配置都要简单许多。将mybatis.jar引入到项目中即可。安装之后下面的工作就是要配置相关文件。mybatis配置文件主要包含两个部门一个是核心配置文件也可称为主配文件,另一部分的配置就是若干个Mapper配置文件。

        mybatis主配置文件,配置项标签要有序,顺序如下

(   properties?, settings?, typeAliases?,  typeHandlers?,  objectFactory?,   objectWrapperFactory?,   plugins?,environments?,databaseIdProvider?,mappers?)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>
 	<properties resource="conf/datasource/jdbc.properties"></properties>
	<settings>
		<!-- 配置开启日志 Log4j -->
		<setting name="logImpl" value="LOG4J"/>
		<!-- <setting name="logImpl" value="SLF4J"/> -->
	</settings>
	
	<typeAliases>
		<typeAlias alias="Group" type="org.lian.domain.Group"/>
		<package name="org.lian.domain"/>
	</typeAliases>
	
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
     <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
    <mapper resource="conf/mybatis/mapper/GroupMapper.xml"/>
    <mapper resource="conf/mybatis/mapper/MusicMapper.xml"/>
  </mappers>
  
</configuration>

        下面是*Mapper.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
<mapper namespace="org.lian.domain.Music">
	
	<!-- <resultMap id="musicResult" type="Music">
		<id property="groupId" column="group_id"/>
		<result property="groupName" column="group_name"/>
	</resultMap> -->
	
	<!-- <select id="selectGroup" parameterType="String" resultType="Group">
		select group_id ,group_name from t_group  where group_id = #{group_id}
	</select> -->
	<!-- 开启二级缓存 Music domain类 Javabean对象要实现Serializable接口  -->
	<!-- <cache/> -->
	<sql id="musicColumns"> id, name, singer, author, composer, album, duration, style  </sql>
	<select id="selectMusic" parameterType="String" resultType="Music">
		select
		<include refid="musicColumns"></include>
		from t_music
		where id = #{musicId}
	</select>
</mapper>

       domain实体类Music.java,省略setter和getter方法,这里采用了mybatis注解,来简化typeAliases配置。

@SuppressWarnings("serial")
@Alias("Music")
public class Music implements Serializable {

	private String id;
	/**
	 * 名称
	 */
	private String name;
	/**
	 * 歌手
	 */
	private String singer;
	/**
	 * 专辑
	 */
	private String album;
	/**
	 * 歌曲时长
	 */
	private String duration;
	/**
	 * 作词
	 */
	private String author;
	/**
	 * 作曲
	 */
	private String composer;
	/**
	 * 曲风
	 */
	private String style;

}

        上面工作将jdomain类Javabean对象和mybatis映射上,下面工作如何来获取SqlSessionFactory和SqlSession对象,这是我们写dao层要使用到最重要的两个对象。

public class MyBatisUtil {

	private static final SqlSessionFactory sqlSessionFactory = buildSqlSessionFactory();

	private static SqlSessionFactory buildSqlSessionFactory() {
		String resource = "conf/mybatis/mybatis_core.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
					.build(inputStream);
			return sqlSessionFactory;
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}
	}

	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}

}

        dao层通过SqlSession对象来访问数据库

public class MusicDaoImpl implements MusicDao {

	@Override
	public Music selectMusicById(String musicId) {
		StringBuilder statement = new StringBuilder();
		statement.append(namespace);
		statement.append("selectMusic");
		SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
		try {
			// 这里使用泛型
			Music music = sqlSession.selectOne(statement.toString(), musicId);
			return music;
		} finally {
			sqlSession.close();
		}
	}
}

    参考网址:http://www.mybatis.org/mybatis-3/zh/index.html

猜你喜欢

转载自blog-chen-lian.iteye.com/blog/2348521