mybatis 简单介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feivirus/article/details/53846013

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的区别

猜你喜欢

转载自blog.csdn.net/feivirus/article/details/53846013