Mybatis快速入门

Mybatis快速入门

Maven依赖

<dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

配置文件
database.properties

--数据库参数
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.56.12:3306/mybatis?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
username=root
password=ok
oracledriver=oracle.jdbc.driver.OracleDriver
oracleurl=jdbc:oracle:thin:@192.168.56.12:1521:prod
oracleusername=zhangpeng
oraclepassword=zp123456

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>
    <properties resource="database.properties"></properties>

    <typeAliases>
        <package name="cn.kgc.kb11.pojo"/>
    </typeAliases>

    <environments default="oracledev">
        <environment id="default">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="${username}"></property>
                <property name="password" value="${password}"></property>
            </dataSource>
        </environment>

        <environment id="oracledev">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${oracledriver}"></property>
                <property name="url" value="${oracleurl}"></property>
                <property name="username" value="${oracleusername}"></property>
                <property name="password" value="${oraclepassword}"></property>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/roledao.xml"></mapper>
        <mapper resource="mapper/userdao.xml"></mapper>
    </mappers>
</configuration>

以User和Role两张表为例

创建User和Role两张表

CREATE TABLE mbuser(
id int not NULL AUTO_INCREMENT PRIMARY KEY,
userCode varchar(32),
userName varchar(32),
userPassword varchar(32),
gender int,
birthday varchar(32),
userRole int
);

CREATE TABLE mbrole(
rid int not NULL AUTO_INCREMENT PRIMARY KEY,
roleCode varchar(32),
roleName varchar(32),
createBy int,
createDate date,
modifyBy int,
modifyDate date
);

INSERT INTO mbuser(userCode,userName,userPassword,gender,birthday,userRole)
VALUES("0001","admin","admin",1,"1996-01-13",1),
("0002","leader","leader",1,"1995-01-15",2),
("0003","leader2","leader2",0,"1993-01-13",2),
("0004","worker1","worker1",1,"1996-01-24",3),
("0005","worker2","worker2",0,"1996-04-23",3);


INSERT INTO mbrole(roleCode,roleName,createBy,createDate)
VALUES("r0001","admin",1,NOW()),
("r0002","leader",1,NOW()),
("r0003","worker",1,NOW());

在这里插入图片描述在这里插入图片描述

User实体类

package cn.kgc.kb11.pojo;

import java.util.Date;

/**
 * @Author ZhangPeng
 * @Date 2021/7/13
 * @Description
 */
public class User {
    private Integer id;
    private String userCode;
    private String userName;
    private String userPassword;
    private Integer gender;
    private Date birthday;
    private Role role;

    public User() {
    }

    public User(Integer id, String userCode, String userName, String userPassword, Integer gender, Date birthday, Role role) {
        this.id = id;
        this.userCode = userCode;
        this.userName = userName;
        this.userPassword = userPassword;
        this.gender = gender;
        this.birthday = birthday;
        this.role = role;
    }

    public Integer getId() {
        return id;
    }

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

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userCode='" + userCode + '\'' +
                ", userName='" + userName + '\'' +
                ", userPassword='" + userPassword + '\'' +
                ", gender=" + gender +
                ", birthday=" + birthday +
                ", role=" + role +
                '}';
    }
}

Role实体类

package cn.kgc.kb11.pojo;

import java.util.Date;
import java.util.List;

/**
 * @Author ZhangPeng
 * @Date 2021/7/13
 * @Description
 */
public class Role {
    private Integer id;
    private String roleCode;
    private String roleName;
    private Integer createBy;
    private Date createDate;
    private Integer modifyBy;
    private Date modifyDate;

    private List<User> users;

    public Role() {
    }

    public Role(Integer id, String roleCode, String roleName, Integer createBy, Date createDate) {
        this.id = id;
        this.roleCode = roleCode;
        this.roleName = roleName;
        this.createBy = createBy;
        this.createDate = createDate;
    }

    public Role(Integer id, String roleCode, String roleName, Integer createBy, Date createDate, Integer modifyBy, Date modifyDate) {
        this.id = id;
        this.roleCode = roleCode;
        this.roleName = roleName;
        this.createBy = createBy;
        this.createDate = createDate;
        this.modifyBy = modifyBy;
        this.modifyDate = modifyDate;
    }

    public Integer getId() {
        return id;
    }

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

    public String getRoleCode() {
        return roleCode;
    }

    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public Integer getCreateBy() {
        return createBy;
    }

    public void setCreateBy(Integer createBy) {
        this.createBy = createBy;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public Integer getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(Integer modifyBy) {
        this.modifyBy = modifyBy;
    }

    public Date getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleCode='" + roleCode + '\'' +
                ", roleName='" + roleName + '\'' +
                ", createBy=" + createBy +
                ", createDate=" + createDate +
                ", modifyBy=" + modifyBy +
                ", modifyDate=" + modifyDate +
                ", users=" + users +
                '}';
    }
}

映射

RoleDao.java

package cn.kgc.kb11.dao;

import cn.kgc.kb11.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author ZhangPeng
 * @Date 2021/7/13
 * @Description
 */
public interface RoleDao {
    List<Role> getAll();
    List<Role> getAll2();
    void addRole(Role role);
    Integer updateRole(Role role);
    Integer deleteRole(Role role);

    Role getRoleByName(String roleName);

    List<Role> getRolesByCondition(@Param("roleName") String roleName,
                                   @Param("createBy") Integer createBy,
                                   @Param("order") Integer order);

    Integer addRole2(Role role);

    Integer updateRole2(Role role);

    Integer deleteRole2(@Param("ids") List<Integer> ids);

    Integer batchAdd(@Param("roles") List<Role> roles);

    Integer batchUpdate(@Param("roles") List<Role> roles);
}

roledao.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="cn.kgc.kb11.dao.RoleDao">
    <select id="getAll" resultType="Role">
        SELECT
        `id`,`roleCode`,`roleName`,`createBy`,
        `createDate`,`modifyBy`,`modifyDate`
        FROM `mbrole`
    </select>

    <insert id="addRole">
        insert into `mbrole`(`id`,`roleCode`,`roleName`,`createBy`,
        `createDate`)
        values (null ,#{roleCode},#{roleName},#{createBy},#{createDate})
    </insert>

    <update id="updateRole">
        update `mbrole` set `roleCode`=#{roleCode},
        `roleName`=#{roleName},
        `modifyBy`=#{modifyBy},
        `modifyDate`=#{modifyDate} where `id`=#{id}
    </update>

    <select id="getAll2" resultMap="roleMap">
       SELECT
      r.`rid`,r.`roleCode`,r.`roleName`,r.`createBy`,
      r.`createDate`,r.`modifyBy`,r.`modifyDate`,
      u.`id`,u.`userCode`,u.`userName`,u.`gender`,u.`birthday`
      FROM `mbrole` r LEFT JOIN `mbuser` u ON r.`rid`=u.`userRole` ;
    </select>

    <resultMap id="roleMap" type="Role">
        <id property="id" column="rid"></id>
        <result property="roleName" column="roleName"></result>
        <result property="roleCode" column="roleCode"></result>
        <result property="createBy" column="createBy"></result>
        <result property="createDate" column="createDate"></result>
        <result property="modifyBy" column="modifyBy"></result>
        <result property="modifyDate" column="modifyDate"></result>
        <collection property="users" ofType="User">
            <id property="id" column="id"></id>
            <result property="userCode" column="userCode"></result>
            <result property="userName" column="userName"></result>
            <result property="gender" column="gender"></result>
            <result property="birthday" column="birthday"></result>
        </collection>
    </resultMap>

    <delete id="deleteRole">
        delete from `mbrole` where `rid`=#{id}
    </delete>
    
    <select id="getRoleByName" resultMap="roleMap">
        <include refid="findRoleSql"></include>
        where r.`roleName`=#{roleName}
    </select>

    <sql id="findRoleSql">
      SELECT
      r.`rid`,r.`roleCode`,r.`roleName`,r.`createBy`,
      r.`createDate`,r.`modifyBy`,r.`modifyDate`,
      u.`id`,u.`userCode`,u.`userName`,u.`gender`,u.`birthday`
      FROM `mbrole` r LEFT JOIN `mbuser` u ON r.`rid`=u.`userRole`
    </sql>
    
    <select id="getRolesByCondition" resultMap="roleMap">
        select
        `rid`,`roleCode`,`roleName`,`createBy`,
        `createDate`,`modifyBy`,`modifyDate`
        from `mbrole`
        <where>
            <if test="roleName!=null and roleName!='' ">
                and `roleName` like concat('%',#{roleName},'%')
            </if>
            <if test="createBy!=null">
                and `createBy`=#{createBy}
            </if>
        </where>
        <choose>
            <when test="order==1">
                order by `createDate` desc
            </when>
            <when test="order==0">
                order by `createDate` asc
            </when>
            <otherwise>
                order by `rid` desc
            </otherwise>
        </choose>
    </select>

    <insert id="addRole2">
        insert into `mbrole`
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="roleCode!=null and roleCode!='' ">
                `roleCode`,
            </if>
            <if test="roleName!=null and roleName!='' ">
                `roleName`,
            </if>
            <if test="createBy!=null">
                `createBy`,
            </if>
            <if test="createDate!=null">
                `createDate`,
            </if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="roleCode!=null and roleCode!='' ">
                #{roleCode},
            </if>
            <if test="roleName!=null and roleName!='' ">
                #{roleName},
            </if>
            <if test="createBy!=null">
                #{createBy},
            </if>
            <if test="createDate!=null">
                #{createDate},
            </if>
        </trim>
    </insert>

    <update id="updateRole2">
        update `mbrole`
        <set>
            <if test="roleCode!=null and roleCode!='' ">
                `roleCode`=#{roleCode},
            </if>
            <if test="roleName!=null and roleName!='' ">
                `roleName`=#{roleName},
            </if>
            <if test="createBy!=null ">
                `createBy`=#{createBy},
            </if>
            <if test="createDate!=null and createDate!='' ">
                `createDate`=#{createDate}
            </if>
        </set>
        where `rid`=#{id}
    </update>

    <delete id="deleteRole2">
        delete from `mbrole` where `rid` in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>
    
    <insert id="batchAdd">
        insert into `mbrole`(`roleCode`,`roleName`,`createBy`,`createDate`)
        values
        <foreach collection="roles" item="role" separator=",">
            (#{role.roleCode},#{role.roleName},#{role.createBy},#{role.createDate})
        </foreach>
    </insert>

    <update id="batchUpdate">
        <foreach collection="roles" item="role">
            update `mbrole`
            <set>
                <if test="role.roleCode!=null and role.roleCode!='' ">
                    `roleCode`=#{role.roleCode},
                </if>
                <if test="role.roleName!=null and role.roleName!='' ">
                    `roleName`=#{role.roleName},
                </if>
                <if test="role.createBy!=null ">
                    `createBy`=#{role.createBy},
                </if>
                <if test="role.createDate!=null and role.createDate!='' ">
                    `createDate`=#{role.createDate},
                </if>
            </set>
            where `rid`=#{role.id}
        </foreach>
    </update>
</mapper>

UserDao.java

package cn.kgc.kb11.dao;

import cn.kgc.kb11.pojo.User;

import java.util.List;

/**
 * @Author ZhangPeng
 * @Date 2021/7/14
 * @Description
 */
public interface UserDao {
    List<User> getAllUser();

    User getUserByName(String name);
}

userdao.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="cn.kgc.kb11.dao.UserDao">
    <select id="getAllUser" resultMap="userMap">
        <include refid="findUserSql"></include>
    </select>
    
    <resultMap id="userMap" type="User">
        <id property="id" column="id"></id>
        <result property="userCode" column="userCode"></result>
        <result property="userName" column="userName"></result>
        <result property="userPassword" column="userPassword"></result>
        <result property="gender" column="gender"></result>
        <result property="birthday" column="birthday"></result>
        <association property="role" javaType="Role">
            <id property="id" column="rid"></id>
            <result property="roleCode" column="roleCode"></result>
            <result property="roleName" column="roleName"></result>
            <result property="createBy" column="createBy"></result>
            <result property="createDate" column="createDate"></result>
            <result property="modifyBy" column="modifyBy"></result>
            <result property="modifyDate" column="modifyDate"></result>
        </association>
    </resultMap>

    <select id="getUserByName" resultMap="userMap">
      <include refid="findUserSql"></include>
      where u.`userName`=#{name};
    </select>
    
    <sql id="findUserSql">
      SELECT
      u.`id`,u.`userCode`,u.`userName`,u.`userPassword`,u.`gender`,u.`birthday`,u.`userRole`,
      r.`rid`,r.`roleCode`,r.`roleName`,r.`createBy`,
      r.`createDate`,r.`modifyBy`,r.`modifyDate`
      FROM `mbuser` u left JOIN `mbrole` r ON r.`rid`=u.`userRole`
    </sql>
</mapper>

测试类

TestMybatis.java

package cn.kgc.kb11.test;

import cn.kgc.kb11.dao.RoleDao;
import cn.kgc.kb11.dao.UserDao;
import cn.kgc.kb11.pojo.Role;
import cn.kgc.kb11.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.management.relation.RoleInfo;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author ZhangPeng
 * @Date 2021/7/13
 * @Description
 */
public class TestMybatis {
    SqlSessionFactory sessionFactory = null;
    SqlSession sqlSession = null;
    RoleDao roleDao;
    UserDao userDao;

    @Test
    public void test(){
        System.out.println(sqlSession);
        System.out.println("roledao:" + roleDao);
    }

    @Test
    public void testGetAll(){
        List<Role> roles = roleDao.getAll();
        for (Role role : roles) {
            System.out.println(role);
        }
    }

    @Test
    public void testGetAll2(){
        List<Role> roles = roleDao.getAll2();
        for (Role role : roles) {
            System.out.println(role);
            List<User> users = role.getUsers();
            for (User user : users) {
                System.out.println(user);
            }
        }
    }

    @Test
    public void testAddRole(){
        Role role = new Role();
        role.setRoleCode("0010");
        role.setRoleName("test");
        role.setCreateBy(1);
        role.setCreateDate(new Date());
        roleDao.addRole(role);
    }

    @Test
    public void testUpdateRole(){
        Role role = new Role();
        role.setId(2);
        role.setRoleName("r0010");
        role.setRoleCode("r0010");
        role.setCreateBy(1);
        role.setCreateDate(new Date());

        Integer integer = roleDao.updateRole(role);
        System.out.println(integer);
    }

    @Test
    public void testDeleteRole(){
        Role role = new Role();
        role.setId(7);
        Integer integer = roleDao.deleteRole(role);
        System.out.println(integer);
    }

    @Test
    public void testGetAllUser(){
        List<User> users = userDao.getAllUser();
        for (User user : users) {
            System.out.println(user);
            Role role = user.getRole();
            System.out.println(role);
        }
    }

    @Test
    public void testGetUserByName(){
        User user = userDao.getUserByName("worker2");
        System.out.println(user);
        System.out.println(user.getRole());
    }

    @Test
    public void testGetRoleByName(){
        Role role = roleDao.getRoleByName("leader");
        System.out.println(role);
        List<User> users = role.getUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void testGetRolesBycondition(){
        List<Role> roles = roleDao.getRolesByCondition(null, null, 3);
        for (Role role : roles) {
            System.out.println(role);
        }
    }

    @Test
    public void testAddRole2(){
        Role role = new Role();
        role.setRoleCode("aabbcc2");
        role.setCreateBy(2);
        Integer i = roleDao.addRole2(role);
        System.out.println(i);
    }

    @Test
    public void testUpdateRole2(){
        Role role = new Role();
        role.setId(1);
        role.setCreateBy(2);
        role.setCreateDate(new Date());
        Integer integer = roleDao.updateRole2(role);
        System.out.println(integer);
    }

    @Test
    public void testDeleteRole2(){
        List<Integer> ids = new ArrayList<>();
        ids.add(4);
        ids.add(5);
        Integer integer = roleDao.deleteRole2(ids);
        System.out.println(integer);
    }

    @Test
    public void testBatchAdd(){
        ArrayList<Role> roles = new ArrayList<>();
        Role role1 = new Role();
        Role role2 = new Role();

        role1.setRoleCode("aabb");
        role1.setRoleName("aabb");
        role1.setCreateBy(1);
        role1.setCreateDate(new Date());

        role2.setRoleCode("aabb2");
        role2.setRoleName("aabb2");
        role2.setCreateBy(2);
        role2.setCreateDate(new Date());

        roles.add(role1);
        roles.add(role2);

        roleDao.batchAdd(roles);
    }

    @Test
    public void testBatchUpdate(){
        ArrayList<Role> roles = new ArrayList<>();
        Role role1 = new Role();
        Role role2 = new Role();

        role1.setId(6);
        role1.setRoleCode("aabb3");
        role1.setRoleName("aabb3");
        role1.setCreateBy(1);
        role1.setCreateDate(new Date());

        role2.setId(7);
        role2.setRoleCode("aabb4");
        role2.setRoleName("aabb4");
        role2.setCreateBy(2);
        role2.setCreateDate(new Date());

        roles.add(role1);
        roles.add(role2);

        roleDao.batchUpdate(roles);
    }

    @Before
    public void start(){
        InputStream resource = TestMybatis.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        sessionFactory = builder.build(resource);
        sqlSession = sessionFactory.openSession();
        roleDao = sqlSession.getMapper(RoleDao.class);
        userDao = sqlSession.getMapper(UserDao.class);
    }

    @After
    public void end(){
        sqlSession.commit();
        sqlSession.close();
        System.out.println("Over");
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值