tkMapper的使用[通俗易懂]

tkMapper的使用[通俗易懂]Maven引入<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency>…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Maven引入

        <dependency>

            <groupId>tk.mybatis</groupId>

            <artifactId>mapper-spring-boot-starter</artifactId>

            <version>2.1.5</version>

        </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>2.2.0</version>

        </dependency>

        <dependency>

            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <optional>true</optional>

        </dependency>

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <scope>runtime</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.12</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <scope>test</scope>

        </dependency>

创建实体类

User.java类

package com.bruce.entity;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import lombok.ToString;

import javax.persistence.Column;

import javax.persistence.Id;

import java.util.Date;

import java.util.List;

@Data

@AllArgsConstructor

@NoArgsConstructor

@ToString

public class Users {

    @Id

    private Integer userId;

    @Column(name = “username”)

    private String userName;

    @Column(name = “password”)

    private String userPassword;

    @Column(name = “nickname”)

    private String nickName;

    @Column(name = “realname”)

    private String userRealName;

    private String userImg;

    private Integer userAge;

    private String userMobile;

    private String userEmail;

    private Boolean userSex;

    private Date userBirth;

    private Date userRegtime;

    private Date userModtime;

    private List<Orders> ordersList;

}

Orders.java 类

package com.bruce.entity;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import lombok.ToString;

import javax.persistence.Id;

@Data

@AllArgsConstructor

@NoArgsConstructor

@ToString

public class Orders {

@Id

private String orderId;

private Long userId;

private String receiverName;

private String receiverMobile;

private String receiverAddress;

}

创建DAO接口

tkMapper已经完成了对单表的通用操作的封装,封装在Mapper接口和MySqlMapper接口;因此如果我们要完成对单表的操作,只需自定义DAO接口继承Mapper接口和MySqlMapper接口

@Repository

public interface UserDAO extends Mapper<User>, MySqlMapper<Users> {

      public Users selectByUsername(String username);   //tkMapper中默认的方法不能满足当前要求可以自定义方法

}

UserMapper.xml

如果tkMybatis默认的方法不能满足当下的要求可以,将自定义的方法写入Mapper.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.bruce.mapper.UsersDao” >

    <!–namespace根据自己需要创建的的mapper的路径和名称填写–>

    <resultMap id=”userMap” type=”com.bruce.entity.Users”>

        <id column=”user_id” property=”userId”></id>

        <result column=”username” property=”userName”></result>

        <result column=”password” property=”userPassword”></result>

        <result column=”nickname” property=”nickName”></result>

        <result column=”realname” property=”userRealName”></result>

        <result column=”user_img” property=”userImg”></result>

        <result column=”user_mobile” property=”userMobile”></result>

        <result column=”user_email” property=”userEmail”></result>

        <result column=”user_sex” property=”userSex”></result>

        <result column=”user_birth” property=”userBirth”></result>

        <result column=”user_regtime” property=”userRegtime”></result>

        <result column=”user_modtime” property=”userModtime”></result>

        <result column=”user_age” property=”userAge”></result>

        <collection property=”ordersList” ofType=”com.bruce.entity.Orders”>

            <id column=”order_id” property=”orderId”></id>

            <result column=”receiver_name” property=”receiverName”></result>

            <result column=”receiver_mobile” property=”receiverMobile”></result>

            <result column=”receiver_address” property=”receiverAddress”></result>

        </collection>

    </resultMap>

    <select id=”selectByUsername” resultMap=”userMap”>

        select

        u.user_id,

        u.username,

        u.password,

        u.nickname,

        u.realname,

        u.user_img,

        u.user_mobile,

        u.user_email,

        u.user_sex,

        u.user_birth,

        u.user_regtime,

        u.user_modtime,

        u.user_age,

        o.order_id,

        o.receiver_name,

        o.receiver_mobile,

        o.receiver_address

        from users u inner join orders o

        on u.user_id = o.user_id

    </select>

</mapper>

修改启动类的`@MapperScan`注解的包

配置的MapperScan不是mybatis的而是`tk.mybatis.spring.annotation.MapperScan`

import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication

@MapperScan(“com.bruce.mapper”)

public class TkmapperDemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(TkmapperDemoApplication.class, args);

    }

}

Junit4 测试定义的方法

package com.bruce.mapper;

import com.bruce.TkmybatisApplication;

import com.bruce.entity.Orders;

import com.bruce.entity.Users;

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 tk.mybatis.mapper.entity.Example;

import java.util.List;

import static org.junit.Assert.*;

@RunWith(SpringRunner.class)

@SpringBootTest(classes = TkmybatisApplication.class)

public class UserDaoTest {

    @Autowired

    private UsersDao usersDao;

    @Autowired

    private OrdersDao ordersDao;

    @Test

    public void testSelect() {

        Example example = new Example(Users.class);

        Example.Criteria criteria = example.createCriteria();

        criteria.andEqualTo(“userName”, “bruce”);

        List<Users> users = usersDao.selectByExample(example);

        Users user1 = users.get(0);

        System.out.println(user1);

        Example example1 = new Example(Orders.class);

        Example.Criteria criteria1 = example1.createCriteria();

        criteria1.andEqualTo(“userId”, user1.getUserId());

        List<Orders> ordersList = ordersDao.selectByExample(example1);

        user1.setOrdersList(ordersList);

        System.out.println(user1);

        System.out.println(user1.getOrdersList());

    }

    @Test

    public void testSelect2(){

        Users bruce = usersDao.selectByUsername(“bruce”);

        System.out.println(bruce);

    }

}

逆向工程操作(用于生成代码)

maven引入

在dependencies中引入

<dependency>

      <groupId>tk.mybatis</groupId>

      <artifactId>mapper</artifactId>

      <version>4.1.5</version>

</dependency>

在build标签下面的plugins标签下加入

<plugin>

                <groupId>org.mybatis.generator</groupId>

                <artifactId>mybatis-generator-maven-plugin</artifactId>

                <version>1.3.5</version>

                <configuration>

                    <!– 这里指定配置文件 –>

                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>

                </configuration>

                <dependencies>

                    <dependency>

                        <groupId>mysql</groupId>

                        <artifactId>mysql-connector-java</artifactId>

                        <version>5.1.47</version>

                    </dependency>

                    <dependency>

                        <groupId>tk.mybatis</groupId>

                        <artifactId>mapper</artifactId>

                        <version>4.1.5</version>

                    </dependency>

                </dependencies>

            </plugin>

把配置文件放到resources下的generator目录下(这里目录可以随意,但要跟上面pow.xml文件中的 configurationFile 中指定目录一致)

tkMapper的使用[通俗易懂]

内置文件内容如下

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE generatorConfiguration

        PUBLIC “-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN”

        “http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd”>

<generatorConfiguration>

    <!– 引入数据库连接配置 –>

<!–    <properties resource=”jdbc.properties”/>–>

    <context id=”Mysql” targetRuntime=”MyBatis3Simple” defaultModelType=”flat”>

        <property name=”beginningDelimiter” value=”`”/>

        <property name=”endingDelimiter” value=”`”/>

        <!– 配置 GeneralDAO –>

        <plugin type=”tk.mybatis.mapper.generator.MapperPlugin”>

            <property name=”mappers” value=”com.bruce.general.GeneralDao”/>

        </plugin>

        <!– 配置数据库连接 –>

        <jdbcConnection driverClass=”com.mysql.jdbc.Driver”

                connectionURL=”jdbc:mysql://localhost:3306/fmmall”

                userId=”root” password=”root”>

        </jdbcConnection>

        <!– 配置实体类存放路径 –>

        <javaModelGenerator targetPackage=”com.bruce.entity” targetProject=”src/main/java”/>

        <!– 配置 XML 存放路径 –>

        <sqlMapGenerator targetPackage=”/” targetProject=”src/main/resources/mappers”/>

        <!– 配置 DAO 存放路径 –>

        <javaClientGenerator targetPackage=”com.bruce.mapper” targetProject=”src/main/java” type=”XMLMAPPER”/>

        <!– 配置需要指定生成的数据库和表,% 代表所有表 –>

        <table tableName=”%”>

            <!– mysql 配置 –>

<!–            <generatedKey column=”id” sqlStatement=”Mysql” identity=”true”/>–>

        </table>

<!–        <table tableName=”tb_roles”>–>

<!–            &lt;!&ndash; mysql 配置 &ndash;&gt;–>

<!–            <generatedKey column=”roleid” sqlStatement=”Mysql” identity=”true”/>–>

<!–        </table>–>

<!–        <table tableName=”tb_permissions”>–>

<!–            &lt;!&ndash; mysql 配置 &ndash;&gt;–>

<!–            <generatedKey column=”perid” sqlStatement=”Mysql” identity=”true”/>–>

<!–        </table>–>

    </context>

</generatorConfiguration>

执行生成

tkMapper的使用[通俗易懂]

tkMapper的使用[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184928.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MongoDB(一)—–MongoDB的用户与权限管理

    MongoDB(一)—–MongoDB的用户与权限管理

    2020年11月12日
  • maven 环境变量的配置「建议收藏」

    maven 环境变量的配置「建议收藏」我的电脑是win10_64位的。一、安装,我使用的是免安装版的,直接解压缩就可以使用。二、配置环境变量。  1.打开环境变量配置。右键计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。  2.配置MAVEN_HOME。在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是F:\Wab\资料\maven\资料\apach…

  • 请画出下面流程图对应的N-S图以及PAD图_N–S图

    请画出下面流程图对应的N-S图以及PAD图_N–S图在需求分阶段经常使用3种方法去剖析我们所面对的业务。程序流程图任何复杂的程序图都应由5种基本控制结构组成或嵌套而成。盒图(N-S图)Nassi和Scheiderman提出了一种符合结构化程序设计原则的图形描述工具,叫作盒图,也叫做N-S图。任何一个N-S图,都是下面5种PAD图PAD是ProblemAnalysisDiagram的缩写,它是日…

  • Hadoop的安装与配置

    Hadoop的安装与配置Hadoop的安装与配置

  • c语言中图书管理系统_C语言图书管理系统源代码

    c语言中图书管理系统_C语言图书管理系统源代码目录C语言图书管理系统文件数据库(功能巨多,反复操作无bug)简介题目要求实现的功能readme代码C语言图书管理系统文件数据库(功能巨多,反复操作无bug)简介c语言的一个大作业,发上来纪念下嘿嘿。写的不是很好,很多东西都揉在一起来,不过注释写的也挺多,希望能帮到有需要的朋友。题目要求简单文件数据库-模拟图书馆管理系统涉及知识点:文件读写、内存管理、结构体定义、基本数据结构、高级格式化输入输出要求:编写一个程序模拟图书管理系统。用户分为管理员和读者两类,分别显示不同文本格式菜单,通过菜

  • python fileinput_Python之fileinput模块学习「建议收藏」

    python fileinput_Python之fileinput模块学习「建议收藏」fileinput模块fileinput.input([files[,inplace[,backup[,bufsize[,mode[,openhook]]]]]])files:#文件的路径列表,默认是stdin方式,多文件[‘1.txt’,’2.txt’,…]inplace:#是否将标准输出的结果写回文件,默认不取代…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号