连接数据库

2018-11-11  本文已影响5人  itachi
dao层的写法

1,创建interface注解,该注解可用在类或者方法上。

public @interface MyBatisDao {
}

2,编写daointerface

public interface AdminDao {
    public Admin findByCode(String adminCode);
}

3,写实现例

package org.ks.dao;

import org.ks.entity.Admin;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;


/*SqlSessionTemplate,用法和sqlsessionn一致
有mybatis-spring.jar提供*/

@Repository("dao1")
public class MyBatisAdminDao implements AdminDao {

    @Resource
    private SqlSessionTemplate template;

    public SqlSessionTemplate getTemplate() {
        return template;
    }

    public void setTemplate(SqlSessionTemplate template) {
        this.template = template;
    }

    @Override
    public Admin findByCode(String adminCode) {
        Admin admin=template.selectOne("findByCode",adminCode);
        return admin;
    }
}

sqlsessiontemplate简介
http://www.mybatis.org/spring/zh/sqlsession.html

4,编写mapple

<mapper namespace="org.ks.dao.AdminDao">
    <select id="findByCode" resultType="org.ks.entity.Admin" parameterType="string">
        SELECT * FROM admin WHERE admin_code=#{code}
    </select>
</mapper>

id需要与方法名相同
resulttype表示查询到返回的类型,需要全路径。
parametertype表示动态参数的类型。

5,编写实体类

6,配置文件

//读取配置文件
<util:properties id="jdbc" location="classpath:db.properties"></util:properties>
//将配置文件的数据设置到datasource里
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="#{jdbc.driverName}"></property>
        <property name="url" value="#{jdbc.url}"></property>
        <property name="username" value="#{jdbc.userName}"></property>
        <property name="password" value="#{jdbc.password}"></property>
    </bean>

    <!--定义 SQLSessionFactoryBean 将Mybatis中的主配置文件中的重要参数引入spring配置文件中-->
    <bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--注入数据源(链接 信息)-->
        <property name="dataSource" ref="dataSource"/>
        <!--注入sql映射定义文件,若是多个mapper文件可以用*代替-->
        <property name="mapperLocations" value="classpath:org/ks/sql/*.xml"/>
    </bean>

    <!--按指定包扫描接口,批量生成接口的实例,采用接口名首字母小写作为接口实例的ID-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.ks.dao"></property>
        <!--此属性可以不用指定,spring会自动注入-->
//接口注释
        <!--org.ks.dao包下有可能有些接口是通过Mapper实现的,也有可能是自己实现的
        且不符合Mapper规范,那么就不能把org.ks.dao下的所有接口都自动实例化
        当出现不需要实例化的接口时,可以通过增加注解来指定哪些接口需要自动
        生成实例-->
        <property name="annotationClass" value="org.ks.util.MyBatisDao"></property>
        <property name="sqlSessionFactory" ref="ssf"></property>
    </bean>


    <context:component-scan base-package="org.ks"/>
    <!--配置HandleMapping-->
    <mvc:annotation-driven/>

//
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--配置sqlsessionTemplate-->
    <bean id="sqSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="ssf"/>
    </bean>
上一篇下一篇

猜你喜欢

热点阅读