zhihu-spider之Mybatis——zhihu-spider开源项目使用技术详解(其四)

zhihu-spider之Mybatis——zhihu-spider开源项目使用技术详解(其四)

1.Mybatis简介

  MyBatis起源于apache的一个开源项目iBatis。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。

  MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

  官方地址:http://www.mybatis.org/

  中文官方地址:http://mybatis.github.io/mybatis-3/zh/index.html

  github地址:https://github.com/mybatis/mybatis-3

2.Mybatis配置

//gradle依赖如下

compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:1.2.0"

//连接mysql数据库使用
compile "mysql:mysql-connector-java:5.1.38"

//连接orcale数据库使用
compile "com.oracle:ojdbc14:11.1.0.6.0"

//maven依赖如下

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

(1).配置数据源

#在application.yml做如下配置

#mysql数据源

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/zhihu_spider?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 555222

#orcale数据源

spring:
  datasource:
    driverClassName: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@192.168.0.146:1521:zhihu_spider
    username: root
    password: 555222    

(2).配置实体包路径和Mapper扫描路径

#在application.yml做如下配置

mybatis:
  mapper-locations: classpath:/mappings/*.xml
  type-aliases-package: com.wei.you.zhihu.spider.entity

3.开发Mapper

(1).Mapper极简xml式开发

#Mapper(Dao)接口定义如下:

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.wei.you.zhihu.spider.entity.Answer;

/**
 * 知乎问题答案Dao接口
 * 
 * @author sunzc
 *
 *         2017年6月10日 下午7:15:48
 */
@Mapper
public interface IAnswerDao {
    /**
     * 批量新增问题答案
     * 
     * @param answers
     * @return
     */
    public boolean save(List<Answer> answers);

    /**
     * 根据问题编号删除问题答案
     * 
     * @param questionId
     * @return
     */
    public boolean deleteByQuestionId(String questionId);
}

#对应的xml文件AnswerMapper.xml存放在资源路径下的mappings文件夹下,其内容如下:

<?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.wei.you.zhihu.spider.dao.IAnswerDao">

    <insert id="save" parameterType="java.util.List">
        insert into
        answer(`id`,`question_id`, `desc` , `author` , `insert_time`) values
        <foreach collection="list" item="item" index="index"
            separator=",">
            (#{item.id} , #{item.questionId}, #{item.desc} ,
            #{item.author} , now())
        </foreach>
    </insert>

    <delete id="deleteByQuestionId" parameterType="java.lang.String">
        delete from answer
        where
        question_id = #{questionId}
    </delete>

</mapper>  

(2). Mapper注解式开发

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users")
    @Results({
        @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
        @Result(property = "nickName", column = "nick_name")
    })
    public List<UserEntity> getAll();

    @Select("SELECT * FROM users WHERE id = #{id}")
    @Results({
        @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
        @Result(property = "nickName", column = "nick_name")
    })
    public UserEntity getOne(Long id);

    @Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")
    void insert(UserEntity user);

    @Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
    public void update(UserEntity user);

    @Delete("DELETE FROM users WHERE id =#{id}")
    public void delete(Long id);
}

//注解的使用说明

// @Select 是查询类的注解,所有的查询均使用这个

// @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰

// @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值

// @Update 负责修改,也可以直接传入对象

// @delete 负责删除

// 特别注意,使用#符号和$符号的不同:

// This example creates a prepared statement, something like select * from teacher where name = ?;
@Select("Select * from teacher where name = #{name}")
Teacher selectTeachForGivenName(@Param("name") String name);

// This example creates n inlined statement, something like select * from teacher where name = 'someName';
@Select("Select * from teacher where name = '${name}'")
Teacher selectTeachForGivenName(@Param("name") String name);

4.使用Dao(Mapper)

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.wei.you.zhihu.spider.dao.IAnswerDao;
import com.wei.you.zhihu.spider.entity.Answer;
import com.wei.you.zhihu.spider.service.IAnswerService;

/**
 * 知乎问题答案Service实现
 * 
 * @author sunzc
 *
 *         2017年6月10日 下午7:17:13
 */
@Component
public class AnswerServiceImpl implements IAnswerService {
    /**
     * 注入问题答案Dao接口
     */
    @Autowired
    private IAnswerDao answerDao;

    @Override
    public boolean save(List<Answer> answers) {
        if (answers == null || answers.isEmpty()) {
            return false;
        }
        return answerDao.save(answers);
    }

    @Override
    public boolean deleteByQuestionId(String questionId) {
        return answerDao.deleteByQuestionId(questionId);
    }
}

5.项目的开源地址

https://github.com/sdc1234/zhihu-spider

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
**smart-web2** 是一套相对简单的OA系统;包含了流程设计器,表单设计器,权限管理,简单报表管理等功能; 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuery+Bootstrap等主流技术; 流程引擎基于Snaker工作流;表单设计器基于雷劈网WEB表单设计器。 系统主要功能有: >1.系统管理 >>系统管理包含有:基础信息管理、系统权限管理、版本管理、子系统管理。 > >2.流程管理 >>流程管理包含有:流程设计器、流程实例管理、流程页面模版管理等功能。 > >3.表单管理 >>表单管理包含有:表单设计器、表管理、表单帮助信息管理等。 > >4.我的办公 >>我的待办、我的已办; > >5.简单报表管理 >>简单报表管理包含:简单报表的设计、报表管理等。 使用说明 ======= ------- ---数据库MySQL5.6以上 ---下载后把data目录下的smart-web2.zip解压;然后解压出来的脚本文件(“smart-web2.sql”)导入到mysql数据库中;注:建库时,字符集编码为:utf8(utf8_general_ci) ---修改配置文件“jdbc.properties”,改成对应数据库的用户名和密码 ---“sysconfig.properties”系统配置文件;需要修改“root.dir”属性,设置为系统上传文件时用来存放的根目录 ----系统管理员用户名为:admin;密码为:123456 ----linux类系统需要修改mysql的配置文件,改为数据库表名不区分大小写(lower_case_table_names=1) 环境要求 ------------ 1.jdk要求1.7及以上; 2.tomcat6或tomcat7; 3.eclipse版本4.4以上; 4.浏览器要求:IE8及以上(最理想的是IE10及以上),火狐,chrome等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值