mybatis使用Dao和Mapper方式

1、配置jdcp.properties数据库连接文件

#mysql database setting
jdbc.type=mysql
jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://1xxx:3306/xx?useUnicode=true&characterEncoding=utf-8
jdbc.username=xxx
jdbc.password=xxx

#pool settings
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20

1.1配置mybatis全局文件mybatis-config.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="cacheEnabled" value="true"/>

		<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
		<setting name="lazyLoadingEnabled" value="true"/>

		<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
		<setting name="aggressiveLazyLoading" value="true"/>

		<!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->
		<setting name="multipleResultSetsEnabled" value="true"/>

		<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
		<setting name="useColumnLabel" value="true"/>

		<!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->
		<setting name="useGeneratedKeys" value="false"/>

		<!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部  -->
		<setting name="autoMappingBehavior" value="PARTIAL"/>

		<!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->
		<setting name="defaultExecutorType" value="SIMPLE"/>

		<!-- 使用驼峰命名法转换字段。 -->
		<setting name="mapUnderscoreToCamelCase" value="true"/>

		<!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
        <setting name="localCacheScope" value="SESSION"/>

        <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
        <setting name="jdbcTypeForNull" value="NULL"/>

	</settings>

	<!-- 类型别名 -->
	<typeAliases>
		<typeAlias alias="Page" type="com.yueqiu8.common.persistence.Page" /><!--分页  -->
	</typeAliases>

	<!-- 插件配置 -->
	<plugins>
		<!--<页面拦截器插件/>-->
		<plugin interceptor="com.github.pagehelper.PageHelper" />

    </plugins>

</configuration>

  

2、spring-context.xml文件配置(spring-context.xml配置在web.xml中加载)

<!-- 加载classpath下的jdbc.properties文件,里面配了数据库连接的一些信息 -->

<context:property-placeholder location="classpath:jdbc.properties"/>

<bean id="dataSource" class="${dataSource}" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driver}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="maxActive" value="10" />
  <property name="maxIdle" value="5" />
</bean>

<!--数据源配置sqlSessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref bean="dataSource"/>
  <property name="typeAliasesPackage" value="com.xxx.path"/>
  <property name="typeAliasesSuperType" value="xxx.xxx"/>
  <property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>
  <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
</bean>

配置sql,UserMapper.xml供service使用

<mapper namespace="ssm.mapper.UserMapper">
  <select id="findUserById" parameterType="int" resultType="user">
    select * from user where id = #{id}
  </select>
</mapper>

3、dao方式和mapper方式使用mybatis

在context-spring.xml配置不同的加载方式

3.1、dao方式:

com.xxx.MybatisDao类如下:

public class MybatisDao extends SqlSessionDaoSupport {
  final static Logger logger = LoggerFactory.getLogger(GenericDao.class);
  private SqlSessionFactory sqlSessionFactory;
  public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
    super.setSqlSessionFactory(sqlSessionFactory);
    this.sqlSessionFactory = sqlSessionFactory;
  }
  public <T>T select(String key, Object param) {
    if(null == param) {
    return this.getSqlSession().selectOne(key);
    }
  return this.getSqlSession().selectOne(key,param);
  }

  //其他insert,delete,update方法自行实现

}

<!-- 配置dao实现类-- >

<bean id="genericDao" class="com.xxx.MybatisDao">
  <property name="sqlSessionFactory">
  <ref bean="sqlSessionFactory" />
  </property>
  <property name="batchSqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<!-- 配置dao使用-->

<bean id="myClass" class="com.xxx.MyClass">
  <property name="myDao" ref="genericDao"></property>
</bean>

在MyClass中是用:

private MybatisDao myDao;

User user = myDao.select("ssm.mapper.UserMapper.findUserById",1);

3.2、mapper方式使用

3.2.1配置xml

<!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
<bean id="mapperScannerConfigurer" class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
  <!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> -->
  <!--自动扫描包路径-->
  <property name="basePackage" value="com.xxx.path"/>
  <!--自动扫描MyBatisDao注解标注的接口并自动装载-->
  <property name="annotationClass" value="com.xxx.annotation.MyBatisDao"/>
  <!--<property name="markerInterface" value="com.xxx.CrudMapper"/>-->
</bean>

3.2.2 //MyBatisDao 注解定义

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Component
public @interface MyBatisDao {}

3.2.3 //mapper接口,相当于dao接口,接口类名必须和mapper.xml命名空间一样UserMapper ,结合typeAliasesPackage使用可省掉命名空间包名路径
public interface UserMapper extends Mapper<T>, MySqlMapper<T> {
  //根据id查询用户信息,方法名必须和mapper.xml配置的id名称一致,参数类型必须和mapper.xml配置parameterType类型一致,返回类型必须和配置的resultType一直

  public User findUserById(int id) throws Exception;
}

原文地址:https://www.cnblogs.com/fushou/p/10755501.html

时间: 2024-10-19 09:40:09

mybatis使用Dao和Mapper方式的相关文章

mybatis的dao的mapper写法

p.p1 { margin: 0.0px 0.0px 13.0px 0.0px; text-align: justify; font: 16.0px Arial; color: #000000 } span.s1 { } span.s2 { font: 16.0px "PingFang TC" } ## MyBatis的Dao编写[mapper代理方式实现] step1: 写一个接口,并写抽象方法 1 package com.sjl.mapper; 2 3 import com.sjl

MyBatis开发Dao层的两种方式(Mapper动态代理方式)

MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上一篇博客中Dao接口实现类方法. Mapper接口开发需要遵循以下规范: (1)Mapper.xml文件中的namespace与mapper接口的类路

Mybatis使用Mapper方式CURD

Mybatis 使用Dao代码方式进行增.删.改.查和分页查询. 1.Maven的pom.xml 2.配置文件 2.1.db.properties 2.2.mybatis.xml 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http

Mybatis使用Dao代码方式CURD

Mybatis 使用Dao代码方式进行增.删.改.查. 1.Maven的pom.xml 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or

Mybatis学习记录(二)--Mybatis开发DAO方式

mybatis开发dao的方法通常用两种,一种是传统DAO的方法,一种是基于mapper代理的方法,下面学习这两种开发模式. 写dao之前应该要对SqlSession有一个更加细致的了解 一.mybatis的SqlSession使用范围 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产

Mybatis入门---dao开发和mapper代理开发

在说mabatis之前,先说说单独使用jdbc编程的缺陷. jdbc编程的大概流程大家都很清楚,基本分为以下几步: 加载数据驱动 创建并获取数据库连接 创建jdbc statement对象 设置sql语句,并设置sql语句中的参数 通过statement执行sql并获取结果 对执行的结果进行解析处理 释放资源 1 public static void main(String[] args) { 2 Connection connection = null; 3 PreparedStatement

MyBatis开发Dao的原始Dao开发和Mapper动态代理开发

摘自:https://www.cnblogs.com/yichunguo/p/11990961.html 目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Mapper动态代理方式 1.定义Mapper.xml(映射文件) 2.编写UserMapper.xml配置文件内容: 3.编写UserMapper(接口文件) 4.加载UserMapper.xml

MyBatis学习13-MyBatis使用mapper代理DAO方法进行开发

1.基本思路 需要编写mapper接口和mapper.xml映射文件.编写mapper接口需要遵循一些开发规范,从而让mybatis可以自动生成mapper接口实现类代理对象. a.在mapper.xml中namespace等于mapper接口地址 b.mapper.java接口中的方法名和mapper.xml中statement的id一致 c.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致 d.mapper.j

Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发(转发同上)

前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)--MyBatis的基础知识.MybatisFirst中存在大量重复的代码.这次简化下代码: 原地址:http://www.cnblogs.com/shanheyongmu/p/7121016.html 使用MyBatis开发Dao,通常有两种方法,即原始Dao开发方法和Mapper接口开发方法. 1.SqlSession使用范围 1.1 SqlsessionFactoryBuilder 通过SqlSessionFac