Mybatis第一课

记录一下,不用Spring Boot而直接使用MyBatis的配置,报了好多错

目录结构

这里写图片描述
- resources目录的下的mapper文件夹名字乱取
- 以Spring开头的两个Java文件可以不要
- 不使用Mapper动态代理的话,java文件夹下的mapper文件夹也可以不要

gradle

buildscript {
    ext.kotlin_version = '1.2.0'
    ext {
        springBootVersion = '2.0.0.M7'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}


dependencies {
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'

    compile('org.springframework.boot:spring-boot-starter-aop')
    compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')
    compile('org.springframework.boot:spring-boot-starter-webflux')
    runtime('mysql:mysql-connector-java')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('io.projectreactor:reactor-test')

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
}

配置文件

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="logImpl" value="LOG4J"/>
    </settings>

    <typeAliases>
        <package name="com.example.demo.domain"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/CountryMapper.xml"/>
    </mappers>
</configuration>
log4j.properties
log4j.rootLogger=ERROR, stdout

#根据XXXmapper.xml命名空间来TRACE
log4j.logger.com.example.demo.mapper=TRACE

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mapper和Domain

Country.java
public class Country {
    private Long id;
    private String countryname;
    private String countrycode;

    public Long getId() {
        return id;
    }

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

    public String getCountryname() {
        return countryname;
    }

    public void setCountryname(String countryname) {
        this.countryname = countryname;
    }

    public String getCountrycode() {
        return countrycode;
    }

    public void setCountrycode(String countrycode) {
        this.countrycode = countrycode;
    }
}
CountryMapper.java
package com.example.demo.mapper;

import com.example.demo.domain.Country;

import java.util.List;

public interface CountryMapper {
    List<Country> selectAll();
}
CountryMapper.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.example.demo.mapper.CountryMapper">
    <select id="selectAll" resultType="Country">
        select id, countryname, countrycode from country;
    </select>
</mapper>
  • 注意namespace

对Kotlin的支持

Country.kt
class Country {
    var id: Long? = null
    var countryname: String? = null
    var countrycode: String? = null
}

//或者
/*
data class Country (
    var id: Int? = null,
    var countryname: String? = null,
    var countrycode: String? = null
)
*/
CountryMapper.kt
package com.example.demo.mapper

import com.example.demo.domain.Country

interface CountryMapper {
    fun selectAll(): List<Country>
}

测试程序

package com.example.demo.mapper

import com.example.demo.domain.Country
import org.apache.ibatis.io.Resources
import org.apache.ibatis.session.SqlSessionFactory
import org.apache.ibatis.session.SqlSessionFactoryBuilder
import org.junit.Before
import org.junit.Test

/**
 * Created by 顾文涛 on 2017/12/8.
 */
class UserMapperTest{
    var sqlSessionFactory: SqlSessionFactory? = null

    @Before
    fun init() {
        val reader = Resources.getResourceAsReader("mybatis-config.xml")
        sqlSessionFactory = SqlSessionFactoryBuilder().build(reader)
        reader.close()
    }

    @Test
    fun testSelectAll() {
        val sqlSession = sqlSessionFactory?.openSession()
        try {
            val mapper = sqlSession?.getMapper(CountryMapper::class.java)
            val users = mapper?.selectAll()
            print(users)
        } finally {
            sqlSession?.close()
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值