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>
<!-- mapper裡面的型別定義-->
<typeAlias type="model.User" alias="User"/>
<typeAlias type="model.Article" alias="Article"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&characterEncoding=utf8" />
<property name="username" value="root"/>
<property name="password" value="xxx" />
</dataSource>
</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&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&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的區別