Springboot整合mybatis

来源:互联网 发布:网络问卷有什么问题 编辑:程序博客网 时间:2024/06/16 00:27

开始学习springboot,找到大神的文章不错,记录下学习过程以备以后忘了啥的。

主要是向 纯洁的微笑 本文出处:http://www.ityouknow.com/

1.注解方式整合

项目结构:
这里写图片描述

pom文件引入相关jar包

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.7.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>    </properties>  <dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.mybatis.spring.boot</groupId>        <artifactId>mybatis-spring-boot-starter</artifactId>        <version>1.1.1</version>    </dependency>     <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>    </dependency>     <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-devtools</artifactId>        <optional>true</optional>    </dependency>  </dependencies>

application.properties文件中添加数据库相关配置:

mybatis.type-aliases-package=com.zzm.test.domain.entityspring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql:*****spring.datasource.username = rootspring.datasource.password = *****

实体类UserEntity

public class UserEntity implements Serializable{    /**     *      */    private static final long serialVersionUID = 1L;    private String id;    private String userSex;    private String nickName;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getUserSex() {        return userSex;    }    public void setUserSex(String userSex) {        this.userSex = userSex;    }    public String getNickName() {        return nickName;    }    public void setNickName(String nickName) {        this.nickName = nickName;    }    public UserEntity() {        super();    }    public UserEntity(String userSex, String nickName) {        super();        this.userSex = userSex;        this.nickName = nickName;    }}   

重点是这个Mapper

public interface UserMapper {    @Select("SELECT * FROM users")    @Results({        @Result(property = "userSex",column = "user_sex"),        @Result(property = "nickName",column = "nick_name")    })    List<UserEntity> getAll();    @Select("SELECT * FROM users WHERE id = #{id}")    @Results({        @Result(property = "userSex",  column = "user_sex"),        @Result(property = "nickName", column = "nick_name")    })    UserEntity getOne(Long id);    @Insert("INSERT INTO users(user_sex,nick_name) VALUES(#{userSex}, #{nickName})")    void insert(UserEntity user);    @Update("UPDATE users SET user_Sex=#{userSex},nick_name=#{nickName} WHERE id =#{id}")    void update(UserEntity user);    @Delete("DELETE FROM users WHERE id =#{id}")    void delete(Long id);}

然后是spring的配置类

定义了下mapper扫描路径和启动。(在每个mapper类上加@MapperScan注解也可以)

@SpringBootApplication@MapperScan("com.zzm.test.domain.mapper")public class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

然后测试类测试

import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import com.zzm.test.domain.entity.UserEntity;import com.zzm.test.domain.mapper.UserMapper;@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperTest {    @Autowired    private UserMapper userMapper;    @Test    public void testInsert() throws Exception {        userMapper.insert(new UserEntity("男", "李雷"));        userMapper.insert(new UserEntity("女", "韩梅梅"));        userMapper.insert(new UserEntity("男", "小明"));        Assert.assertEquals(3, userMapper.getAll().size());    }    @Test    public void testQuery() throws Exception {        List<UserEntity> users = userMapper.getAll();        System.out.println(users.toString());    }    @Test    public void testUpdate() throws Exception {        UserEntity user = userMapper.getOne(2L);        System.out.println(user.toString());        user.setNickName("neo");        userMapper.update(user);        Assert.assertTrue(("neo".equals(userMapper.getOne(2l).getNickName())));    }}

一切ok 库中也有了数据。

2简单XML文件整合

项目结构:
这里写图片描述

pom文件配置同注解方式

application.properties中新增

mybatis.config-locations=classpath:mybatis/mybatis-config.xmlmybatis.mapper-locations=classpath:mybatis/mapper/*.xml

指定配置文件和mapper.xml文件位置

实体类UserEntity同上

UserMapper

public interface UserMapper {    List<UserEntity> getAll();    UserEntity getOne(Long id);    void insert(UserEntity user);    void update(UserEntity user);    void delete(Long id);}   

Application配置类同上

mybatis-config

<?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>        <typeAliases>            <typeAlias alias="Integer" type="java.lang.Integer" />            <typeAlias alias="Long" type="java.lang.Long" />            <typeAlias alias="HashMap" type="java.util.HashMap" />            <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />            <typeAlias alias="ArrayList" type="java.util.ArrayList" />            <typeAlias alias="LinkedList" type="java.util.LinkedList" />        </typeAliases>    </configuration></beans>

user-mapper

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.zzm.test.domain.mapper.UserMapper">    <resultMap id="BaseResultMap" type="com.zzm.test.domain.entity.UserEntity" >        <id column="id" property="id" jdbcType="INTEGER" />        <result column="user_sex" property="userSex" />        <result column="nick_name" property="nickName" jdbcType="VARCHAR" />    </resultMap>    <sql id="Base_Column_List" >        id, user_sex, nick_name    </sql>    <select id="getAll" resultMap="BaseResultMap"  >       SELECT        <include refid="Base_Column_List" />       FROM users    </select>    <select id="getOne" parameterType="java.lang.Long" resultMap="BaseResultMap" >        SELECT        <include refid="Base_Column_List" />       FROM users       WHERE id = #{id}    </select>    <insert id="insert" parameterType="com.zzm.test.domain.entity.UserEntity" >       INSERT INTO             users            (user_sex,nick_name)         VALUES            (#{userSex}, #{nickName})    </insert>    <update id="update" parameterType="com.zzm.test.domain.entity.UserEntity" >       UPDATE             users        SET         <if test="userSex != null">user_Sex = #{userSex},</if>        nick_name = #{nickName}       WHERE             id = #{id}    </update>    <delete id="delete" parameterType="java.lang.Long" >       DELETE FROM             users        WHERE              id =#{id}    </delete></mapper>

测试类UserMapperTest同上

清空下原来表(truncate users)中数据重新测试,一切ok

原创粉丝点击