mybatis使⽤Dao和Mapper⽅式
1、配置jdcp.properties数据库连接⽂件
#mysql databa tting
jdbc.sql.jdbc.Driver
jdbc.url=jdbc:mysql://1xxx:3306/xx?uUnicode=true&characterEncoding=utf-8
jdbc.urname=xxx
jdbc.password=xxx
#pool ttings
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20
1.1配置mybatis全局⽂件l
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<ttings>
<!-- 使全局的映射器启⽤或禁⽤缓存。 -->
<tting name="cacheEnabled" value="true"/>
<!-- 全局启⽤或禁⽤延迟加载。当禁⽤时,所有关联对象都会即时加载。 -->
<tting name="lazyLoadingEnabled" value="true"/>
<!-- 当启⽤时,有延迟加载属性的对象在被调⽤时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<tting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<tting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使⽤列的别名 (取决于驱动的兼容性) default:true -->
<tting name="uColumnLabel" value="true"/>
<!-- 允许JDBC ⽣成主键。需要驱动器⽀持。如果设为了true,这个设置将强制使⽤被⽣成的主键,有⼀些驱动器不兼容不过仍然可以执⾏。 default:fal --> <tting name="uGeneratedKeys" value="fal"/>
<!-- 指定 MyBatis 如何⾃动映射数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
<tting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 这是默认的执⾏类型(SIMPLE: 简单; REUSE: 执⾏器可能重复使⽤prepared statements语句;BATCH: 执⾏器可以重复执⾏语句和批量更新) --> <tting name="defaultExecutorType" value="SIMPLE"/>
<!-- 使⽤驼峰命名法转换字段。 -->
<tting name="mapUnderscoreToCamelCa" value="true"/>
<!-- 设置本地缓存范围 ssion:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:ssion -->
<tting name="localCacheScope" value="SESSION"/>
<!-- 设置但JDBC类型为空时,某些驱动程序要指定值,default:OTHER,插⼊空值时不需要指定类型 -->
<tting name="jdbcTypeForNull" value="NULL"/>
</ttings>
<!-- 类型别名 -->
<typeAlias>
<typeAlias alias="Page" type="persistence.Page" /><!--分页 -->
</typeAlias>
<!-- 插件配置 -->
<plugins>
<!--<;页⾯拦截器插件/>-->
<plugin interceptor="com.github.pagehelper.PageHelper" />
</plugins>
二年级口算题下册</configuration>
2、l⽂件配置(l配置在l中加载)
<!-- 加载classpath下的jdbc.properties⽂件,⾥⾯配了数据库连接的⼀些信息 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="${dataSource}" destroy-method="clo">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="urname" value="${jdbc.urname}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="10" />
<property name="maxIdle" value="5" />
</bean>
<!--数据源配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="batis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref bean="dataSource"/>
<property name="typeAliasPackage" value="path"/>
<property name="typeAliasSuperType" value=""/>
<property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>
<property name="configLocation" value="classpath:/l"></property>
</bean>
配置sql,l供rvice使⽤
<mapper namespace="ssm.mapper.UrMapper">
武汉市长江大桥
<lect id="findUrById" parameterType="int" resultType="ur">
lect * from ur where id = #{id}
</lect>
</mapper>
3、dao⽅式和mapper⽅式使⽤mybatis
在l配置不同的加载⽅式
3.1、dao⽅式:
public class MybatisDao extends SqlSessionDaoSupport {
final static Logger logger = Logger(GenericDao.class);
private SqlSessionFactory sqlSessionFactory;
public void tSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.tSqlSessionFactory(sqlSessionFactory);
this.sqlSessionFactory = sqlSessionFactory;
美哉嘉陵
}
public <T>T lect(String key, Object param) {
if(null == param) {
SqlSession().lectOne(key);
}
SqlSession().lectOne(key,param);
}
//其他inrt,delete,update⽅法⾃⾏实现
}
<!-- 配置dao实现类-- >
<bean id="genericDao" class="MybatisDao">
鸡蛋沉浮实验
<property name="sqlSessionFactory">
<ref bean="sqlSessionFactory" />
</property>
<property name="batchSqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- 配置dao使⽤-->
<bean id="myClass" class="MyClass">
<property name="myDao" ref="genericDao"></property>
</bean>
在MyClass中是⽤:
private MybatisDao myDao;
Ur ur = myDao.lect("ssm.mapper.UrMapper.findUrById",1);
3.2、mapper⽅式使⽤
3.2.1配置xml
<!-- 扫描baPackage下所有以@MyBatisDao注解的接⼝ -->
<bean id="mapperScannerConfigurer" class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> -->
<!--⾃动扫描包路径-->
<property name="baPackage" value="path"/>
王凌志
职务是什么 <!--⾃动扫描MyBatisDao注解标注的接⼝并⾃动装载-->
<property name="annotationClass" value="annotation.MyBatisDao"/>
<!--<property name="markerInterface" value="CrudMapper"/>-->崔涂
贼头贼脑</bean>
3.2.2 //MyBatisDao 注解定义
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Component
public @interface MyBatisDao {}
3.2.3 //mapper接⼝,相当于dao接⼝,接⼝类名必须和l命名空间⼀样UrMapper ,结合typeAliasPackage使⽤可省掉命名空间包名路径
public interface UrMapper extends Mapper<T>, MySqlMapper<T> {
//根据id查询⽤户信息,⽅法名必须和l配置的id名称⼀致,参数类型必须和l配置parameterType类型⼀致,返回类型必须和配置的resultType⼀直 public Ur findUrById(int id) t
hrows Exception;
}