mybatis文件配置方式和注解方式操作数据库

以对question的表操作为例。
model层:无注解,有每个属性的get,set方法(下面省略了一些)

public class Question {
    private int id;
    private String title;
    private String content;
    private Date createdDate;
    private int userId;
    private int commentCount;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

dao层:接口类上面有@Repository和@Mapper注解
在一个稍大的项目中,如果组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。
Spring2.5为我们引入了组件自动扫描机制,他在类路径下寻找标注了上述注解的类,并把这些类纳入进spring容器中管理。这个类就成了Spring受管组件。类似性质的还有@controller 控制器,@service 服务,@component (把普通pojo实例化到spring容器中)
添加了@Mapper注解(mybatis注解)之后这个接口在编译时会生成相应的实现类, 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id,
也就是说这个接口是不支持重载的

@Repository
@Mapper
public interface QuestionDao {
    String TABLE_NAME = " question ";
    String INSERT_FIELDS = " title, content, created_date, comment_count, user_id ";
    String SELECT_FIELDS = " id, "+INSERT_FIELDS;

    @Insert({"insert into ", TABLE_NAME, "(", INSERT_FIELDS, ") Values (#{title}, #{content}, #{createdDate}, #{userId}, #{commentCount})"})
    int addQuestion(Question question);

    //@Select({"select ", SELECT_FIELDS, " from ", TABLE_NAME, " WHERE user_id = #{userId} ORDER BY id DESC LIMIT #{offset},#{limit}"})
    List<Question> selectLatestQuestions(@Param("userId") int userId,
                                         @Param("offset") int offset,
                                         @Param("limit") int limit);
}

后面服务层或者控制层可用使用这个dao层类了。用
@Autowired
QuestionDao questionDao;就可以用了,不多说。

addQuestion方法是注解生成的操作(不需要额外配置)

selectLatestQuestions方法是配置文件生成的操作

1,要先在resource文件下新建一个跟QuestionDao目录一样的目录结构,一样名称的xml文件
这里写图片描述
这里写图片描述

2,QuestionDao.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="com.nowcoder.dao.QuestionDao">
    <sql id="table">question</sql>
    <sql id="selectFields">id,title, content,comment_count,created_date,user_id</sql>
    <select id="selectLatestQuestions"
            resultType="com.nowcoder.model.Question">SELECT<include refid="selectFields"/>FROM<include refid="table"/><if test="userId != 0">WHERE user_id = #{userId}</if>
        ORDER BY id DESC LIMIT #{offset},#{limit}
    </select>
</mapper>

3,application.properties里面加入mysql链接的配置和操作的一些配置

spring.datasource.url=jdbc:mysql://localhost/wenda?useSSL=true&useUnicode=yes&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=778899
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:com.nowcoder.dao/*.xml

4,mybatis-config.xml文件中 ,QuestionDao.xml与接口是一样的路径与名字,下面就不用去配置mapper了,不然会报错的。

<?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">
<!--通过这个配置文件,完成mybatis与数据库的连接  -->
<configuration>

    <settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="defaultStatementTimeout" value="3000"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="useGeneratedKeys" value="true"/>
    </settings>


    <!-- xml导入sql
     <mappers>
        <mapper resource="com.nowcoder.dao/QuestionDao.xml"/>
    </mappers>
     -->

</configuration>

5,en,pom.xml不要忘记引入依赖

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>


        <dependency>
            <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

我引入mybatis依赖的时候不知道怎么搞的下载不完全,很慢,一个小tip就是加入:

<!--阿里云搞的镜像,下载更快-->
    <repositories>
        <repository>
            <id>nexus-aliyun</id>
            <name>nexus-aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值