1. 程式人生 > >mybatis 簡單介紹

mybatis 簡單介紹

1.jar包依賴

mybatis-3.4.1.jar,  mybatis-spring-1.3.0.jar

2.資料來源配置

比如在configuration.xml裡面

<?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>
<settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

<typeAliases>

<!-- mapper裡面的型別定義-->
<typeAlias type="model.User" alias="User"/>
<typeAlias type="model.Article" alias="Article"/>
</typeAliases>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>

<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&amp;characterEncoding=utf8" />
<property name="username" value="root"/>
<property name="password" value="xxx" />
</dataSource>
</environment>
</environments>

<!--  不通過springmvc配置掃描包的方式
<mappers>
<mapper resource="model/User.xml" />
</mappers>
-->
</configuration>

3.編寫model類和對應的modle.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="dao.IUserOperation">

<select id="selectUserByID" parameterType="int" resultType="User">
select * from user where id = ${_parameter}
</select>

</mapper>

4.呼叫sql語句(不通過介面)

通過 Reader reader    = Resources.getResourceAsReader("Configuration.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

SqlSessionFactory..selectOne("model.UserMapper.selectUserByID", 1)方式呼叫mapper的xml檔案的sql語句.

5通過介面呼叫sql語句

定義介面,比如public interface IUserOperation {
public User selectUserByID(int id);

}

通過SqlSession session = sessionFactory.openSession();
IUserOperation userOperation = session.getMapper(IUserOperation.class);
User user = (User)userOperation.selectUserByID(1);

獲取mapper類的方式,此時,需要注意mapper的xml檔案中的namespace對應到類的路徑名稱

6.單表增刪改查,定義對應的sql語句

7.多表操作,比如

<resultMap type="Article" id="resultUserArticleList">
<id column="aid" property="id"></id>
<result property="title" column="title" />
<result property="content" column="content" />
<association property="user" javaType="User">
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="userAge" column="userAge" />
<result property="userAddress" column="userAddress" />
</association>
</resultMap>

<select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
select user.id, user.userName,user.userAddress, article.id aid,article.title,article.content
from user, article where user.id=article.userid and user.id=
<if test="_parameter != 3">
${_parameter}
</if>
<if test="_parameter == 3">
1
</if>
</select>

8.與spring整合

在applicationContext中定義資料來源,比如

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&amp;characterEncoding=utf8"/>
<property name="username" value="root" />
<property name="password" value="xxx" /> 
</bean>


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:Configuration.xml" /> 
</bean>

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="model.IUserOperation" />
</bean>

9.與springmvc整合

在applicationContext中定義資料來源,比如

<context:component-scan base-package="controller"></context:component-scan>
<mvc:annotation-driven />
<mvc:default-servlet-handler/>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&amp;characterEncoding=utf8"/>
<property name="username" value="root" />
<property name="password" value="xxxxx" /> 
</bean>


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:Configuration.xml" /> 
<property name="mapperLocations" value="classpath*:mappers/*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="dao" />
</bean>

在呼叫類中,

注入,@Autowired 
IUserOperation userMapper;

呼叫List<Article> articles = userMapper.getUserArticles(4);

10.mybatis分頁

通過limit offset或者外掛

11.動態sql語句

if,choose,trim,where,set,foreach

12.快取

13.多個引數

14.控制檯顯示sql語句

15.與hibernate的區別