MyBatis课后练习题——(狂神说系列)

MyBatis课后练习题

1,导入数据库,及配置文件

1,1,导入数据库

1,1,1,smbms_address
CREATE TABLE `smbms_address` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `contact` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人姓名',
  `addressDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '收货地址明细',
  `postCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '邮编',
  `tel` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人电话',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
  `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
  `userId` bigint(20) DEFAULT NULL COMMENT '用户ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


1,1,2,smbms_bill
CREATE TABLE `smbms_bill` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `billCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '账单编码',
  `productName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品名称',
  `productDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品描述',
  `productUnit` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品单位',
  `productCount` decimal(20,2) DEFAULT NULL COMMENT '商品数量',
  `totalPrice` decimal(20,2) DEFAULT NULL COMMENT '商品总额',
  `isPayment` int(10) DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
  `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
  `providerId` int(20) DEFAULT NULL COMMENT '供应商ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


1,1,3,smbms_provider
CREATE TABLE `smbms_provider` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `proCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商编码',
  `proName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商名称',
  `proDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商详细描述',
  `proContact` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商联系人',
  `proPhone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系电话',
  `proAddress` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
  `proFax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '传真',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


1,1,4,smbms_role
CREATE TABLE `smbms_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `roleCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色编码',
  `roleName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色名称',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
  `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


1,1,5,smbms_user
CREATE TABLE `smbms_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `userCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码',
  `userName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称',
  `userPassword` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码',
  `gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',
  `address` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
  `userRole` int(10) DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
  `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


1,2,配置文件

1,2,1,resources
1,2,1,1,mybatis-config.xml




<configuration>
    
    <properties resource="db.properties"/>
    
    <settings>
        
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    settings>
    <typeAliases>
        <package name="com.zp.pojo"/>
    typeAliases>
    <environments default="development">
        <environment id="development">
            
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>
        environment>
    environments>

    <mappers>
        
        
        <package name="com.zp.dao"/>
    mappers>
configuration>
1,2,1,2,db.properties
driver:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/dbtest1?useSSl=true&;useUnicode=true&;characterEncoding=utf-8
username:root
password:123456
1,2,2,utils
1,2,2,1,mybatisUtils
package com.zp.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

//mybatis工具类
//SqlSessionFactory-->SqlSession
public class mybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //使用mybatis第一步获取 :SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession
    //提供了在数据库执行 SQL 命令所需的所有方法。你可以通过
    //SqlSession 实例来直接执行已映射的 SQL 语句。例如:
    //opensession=true->自动提交事务
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession(/*true*/);
        }
    }
1,3,1,pom.xml

pom.xml,只需要取其中的一些jar包即可


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    
    <groupId>com.zpgroupId>
    <artifactId>test1artifactId>
    <packaging>pompackaging>
    <version>1.0-SNAPSHOTversion>
    <modules>
        <module>mybatis-01module>
        <module>mybatis-02module>
        <module>mybatis-03module>
        <module>mybatis-04module>
        <module>mybatis-05module>
        <module>Mybatis-06module>
        <module>mybatis-07module>
        <module>mybatis-08module>
        <module>mybatis-09module>
        <module>mybatis-10module>
    modules>


    
    <dependencies>
        
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.4version>
                <scope>providedscope>
            dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.47version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.3version>
        dependency>
        
        <dependency>
            <groupId>org.junitgroupId>
            <artifactId>com.springsource.org.junitartifactId>
            <version>4.7.0version>
        dependency>
        
        
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.17version>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.2.8.RELEASEversion>
        dependency>


    dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/mian/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
            <resource>
                <directory>src/mian/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
        resources>
    build>
project>

2,创建实体类

2,1,Bill

package com.zp.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class Bill {
    private Integer id;   //id
    private String billCode; //账单编码
    private String productName; //商品名称
    private String productDesc; //商品描述
    private String productUnit; //商品单位
    private BigDecimal productCount; //商品数量
    private BigDecimal totalPrice; //总金额
    private Integer isPayment; //是否支付
    private Integer providerId; //供应商ID
    private Integer createdBy; //创建者
    private Date creationDate; //创建时间
    private Integer modifyBy; //更新者
    private Date modifyDate;//更新时间
    private String providerName;//供应商名称

}


2,2,Provider

package com.zp.pojo;

import lombok.Data;

import java.util.Date;
@Data

public class Provider {

    private Integer id;   //id
    private String proCode; //供应商编码
    private String proName; //供应商名称
    private String proDesc; //供应商描述
    private String proContact; //供应商联系人
    private String proPhone; //供应商电话
    private String proAddress; //供应商地址
    private String proFax; //供应商传真
    private Integer createdBy; //创建者
    private Date creationDate; //创建时间
    private Integer modifyBy; //更新者
    private Date modifyDate;//更新时间



}



2,3,Role

package com.zp.pojo;
import lombok.Data;

import java.util.Date;
@Data
public class Role {

    private Integer id;   //id
    private String roleCode; //角色编码
    private String roleName; //角色名称
    private Integer createdBy; //创建者
    private Date creationDate; //创建时间
    private Integer modifyBy; //更新者
    private Date modifyDate;//更新时间



}



2,4,User

package com.zp.pojo;
import lombok.Data;

import java.util.Date;
@Data
public class User {
    private Integer id; //id
    private String userCode; //用户编码
    private String userName; //用户名称
    private String userPassword; //用户密码
    private Integer gender;  //性别
    private Date birthday;  //出生日期
    private String phone;   //电话
    private String address; //地址
    private Integer userRole;    //用户角色
    private Integer createdBy;   //创建者
    private Date creationDate; //创建时间
    private Integer modifyBy;     //更新者
    private Date modifyDate;   //更新时间
    private Integer age;//年龄
    private String userRoleName;    //用户角色名称


    /*public Integer getAge() {
     *//*long time = System.currentTimeMillis()-birthday.getTime();
		Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*//*
		Date date = new Date();
		Integer age = date.getYear()-birthday.getYear();
		return age;
	}*/

}



3,创建接口和接口实现类,以及测试类

3,1Bill

3,1,1,BillMapper
package com.zp.dao;


import com.zp.pojo.Bill;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zp
 * @version 1.0
 * @create 2020/10
 */
public interface BillMapper {
    /**
     * 根据供应商Id查询订单数量
     * @param providerId
     * @return
     */
    //根据供应商Id查询订单数量
    public int getBillCountByProviderId(@Param("providerId") Integer providerId);


    /**
     * //增加订单
     * @param bill
     * @return
     */
    public int add(Bill bill);

    /**
     * 通过查询条件获取供应商列表-getBillList
     * @param productName
     * @param providerId
     * @param isPayment
     * @param startindex
     * @param pageSize
     * @return
     * @throws Exception
     */
    //通过查询条件获取供应商列表-getBillList
    public List<Bill> getBillList(@Param("productName") String productName,
                                  @Param("providerId") String providerId,
                                  @Param("isPayment") String isPayment,
                                  @Param("startindex") Integer startindex,
                                  @Param("pageSize") Integer pageSize)throws Exception;

    //通过条件查询,查询供货商数量,模糊查询
    public int getBillCount(@Param("productName") String productName,
                            @Param("providerId") String providerId,
                            @Param("isPayment") String isPayment)throws Exception;

    //通过delId删除Bill
    public int deleteBillById(@Param("id") Integer id)throws Exception;

    //通过billId获取Bill
    public Bill getBillById(@Param("id") Integer id)throws Exception;

    //修改订单信息
    public int modify(Bill bill)throws Exception;

    //根据供应商Id删除订单信息
    public int deleteBillByProviderId(@Param("providerId") Integer providerId)throws Exception;

}




3,1,2,BillMapper.xml


<mapper namespace="com.zp.dao.BillMapper">

    
    <select id="getBillCountByProviderId" resultType="int">
        select count(*)from smbms.smbms_bill
        where providerId=#{providerId}
    select>

    
    <insert id="add" parameterType="bill">
        insert into smbms.smbms_bill (id,billCode,productName,productDesc,productUnit,productCount
        ,totalPrice,isPayment,providerId,createdBy,creationDate) values
         (#{id},#{billCode},#{productName},#{productDesc},#{productUnit},#{productCount},
         #{totalPrice},#{isPayment},#{providerId},#{createdBy},#{creationDate})
    insert>

    
    <select id="getBillList" resultType="bill">
        select * from smbms.smbms_bill
        <where>
            <if test="productName !=null">
                and productName like concat ('%',#{productName},'%')
            if>
            <if test="providerId !=null">
                and providerId like concat('%',#{providerId},'%')
            if>
            <if test="isPayment !=null">
                and isPayment like concat ('%',#{isPayment},'%')
            if>

        where>
        limit #{startindex},#{pageSize}
    select>

    
    <delete id="deleteBillById" parameterType="int">
        delete from smbms.smbms_bill
        <where>
            id=#{id}
        where>
    delete>

    
    <select id="getBillById" resultType="bill">
        select * from smbms.smbms_bill
        <where>
            id=#{id}
        where>
    select>

    
    <update id="modify" parameterType="bill">
        update smbms.smbms_bill
        <set>
            <if test="productName !=null">
                productName=#{productName},
            if>
            <if test="productDesc !=null">
                productDesc=#{productDesc},
            if>
            <if test="productCount !=null">
                productCount=#{productCount},
            if>
        set>
        <where>
            id=#{id}
        where>
    update>
mapper>

3,1,3,BillTest
package com.zp.dao;
import com.zp.pojo.Bill;
import com.zp.pojo.User;
import com.zp.utils.mybatisUtils;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class BillTest {

    //根据供应商Id查询订单数量
    @Test
    public void getBillCountByProviderId(){
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
        int count = mapper.getBillCountByProviderId(3);
        System.out.println("供应商Id为:3的供应"+count+"种商品");
        sqlSession.close();
    }

    //增加订单
    @Test
    public void add(){
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
        Bill bill = new Bill();
        bill.setId(19);
        bill.setBillCode("BILL2016_019");
        mapper.add(bill);
        sqlSession.commit();
        sqlSession.close();
    }

    //通过条件查询,查询供货商数量,模糊查询
    @Test
    public void getBillList()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
       /* Bill bill = new Bill();
        bill.setProductName("油");
        bill.setBillCode("1");
        bill.setProviderId(2);*/
        List<Bill> billList = mapper.getBillList("油", "1", "1",
                0, 2);
        for (Bill bill : billList) {
            System.out.println(bill);
        }
        sqlSession.close();
    }

//    通过id,删除
    @Test
    public void deleteBillById()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
        mapper.deleteBillById(19);
        sqlSession.commit();
        sqlSession.close();

    }

    //通过billId获取Bill
    @Test
    public void getBillById() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
        Bill bill = mapper.getBillById(2);
        System.out.println(bill);
        sqlSession.close();

    }

    //修改订单信息
    @Test
    public void modify()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        BillMapper mapper = sqlSession.getMapper(BillMapper.class);
        Bill bill = new Bill();
        bill.setProductName("爽歪歪");
        bill.setId(18);
        mapper.modify(bill);
        sqlSession.commit();
        sqlSession.close();
    }
}

3,2,Provider

3,2,1,ProviderMapper
package com.zp.dao;


import com.zp.pojo.Provider;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zp
 * @version 1.0
 * @create 2020/10
 */
public interface ProviderMapper {
        /**
         * 增加供应商
         * @param provider
         * @return
         * @throws Exception
         */
        public int add(Provider provider)throws Exception;


        /**
         * 通过供应商名称、编码获取供应商列表-模糊查询-providerList
         * @param proName
         * @return
         * @throws Exception
         */
        public List<Provider> getProviderList(@Param("proName") String proName,
                                              @Param("proCode")String proCode)throws Exception;

        /**
         * 通过proId删除Provider
         * @param id
         * @return
         * @throws Exception
         */
        public int deleteProviderById( int id)throws Exception;


        /**
         * 通过proId获取Provider
         * @param id
         * @return
         * @throws Exception
         */
        public Provider getProviderById(String id)throws Exception;

        /**
         * 修改用户信息
         * @param
         * @return
         * @throws Exception
         */
        public int modify(Provider provider)throws Exception;

}

3,2,2,ProviderMapper.xml


<mapper namespace="com.zp.dao.ProviderMapper">

    <insert id="add" parameterType="provider">
        insert into smbms.smbms_provider
        (id,proCode,proName,proDesc)
        values
        (#{id},#{proCode},#{proName},#{proDesc})
    insert>

    <select id="getProviderList" parameterType="String" resultType="provider">
        select * from smbms.smbms_provider
        <where>
            <if test="proName !=null">
                and proName like concat('%',#{proName},'%')
            if>
            <if test="proCode !=null">
                and proCode like concat ('%',#{proCode},'%')
            if>
        where>
    select>

    <delete id="deleteProviderById" parameterType="int">
        delete from smbms.smbms_provider
        <where>
            id=#{id}
        where>
    delete>

    <select id="getProviderById" parameterType="String" resultType="provider">
        select * from smbms.smbms_provider
        <where>
            id=#{id}
        where>
    select>

    <update id="modify" parameterType="provider">
        update smbms.smbms_provider
        <set>
            <if test="proCode !=null">
                proCode=#{proCode},
            if>
            <if test="proName !=null">
                proName=#{proName},
            if>
        set>
        <where>
            id=#{id}
        where>
    update>
mapper>

3,2,3,providerTest
package com.zp.dao;

import com.zp.pojo.Provider;
import com.zp.utils.mybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class providerTest {
    @Test
    public void add() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);
        Provider provider = new Provider();
        provider.setId(16);
        provider.setProCode("新添加的");
        provider.setProName("张朋");
        provider.setProDesc("主营app");
        mapper.add(provider);
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void getProviderList()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);
        /*Provider provider = new Provider();
        provider.setProName("张");
        provider.setProCode("新");*/
        List<Provider> providerList = mapper.getProviderList("张","新");
        for (Provider provider : providerList) {
            System.out.println(provider);
        }
        sqlSession.close();
    }

    @Test
    public void deleteProviderById()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);
        mapper.deleteProviderById(16);
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void  getProviderById()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);
        Provider provider = mapper.getProviderById("1");
        System.out.println(provider);
        sqlSession.close();
    }

    @Test
    public void modify()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        ProviderMapper mapper = sqlSession.getMapper(ProviderMapper.class);
        Provider provider = new Provider();
        provider.setProCode("修改proCode");
        provider.setProName("修改proName");
        provider.setId(1);
        mapper.modify(provider);
        sqlSession.commit();
        sqlSession.close();
    }
}

3,3,Role

3,3,1,RoleMapper
package com.zp.dao;

import com.zp.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * throws Exception这是java内部的异常
 * 一般都是自定义异常类
 * @author zp
 * @version 1.0
 * @create 2020/10
 */
public interface RoleMapper {

    //获取角色列表
    public List<Role> getRoleList()throws Exception;

    //增加角色信息
    public int add(Role role)throws Exception;

    //通过Id删除Role
    public int deleteRoleById(@Param("id") String Id)throws Exception;

    //修改角色信息
    public int modify(Role role)throws Exception;

    //通过Id获取role
    public Role getRoleById(@Param("id") Integer id)throws Exception;

    //根据roleCode,进行角色编码的唯一性验证(统计count)
    public int roleCodeIsExist(@Param("roleCode") String roleCode)throws Exception;



}

3,3,2,RoleMapper.xml



<mapper namespace="com.zp.dao.RoleMapper">

    <select id="getRoleList" resultType="role">
    select * from smbms.smbms_role
    select>

    <insert id="add" parameterType="role">
        insert into smbms.smbms_role (id,roleCode,roleName)
        values
        (#{id},#{roleCode},#{roleName})
    insert>

    <delete id="deleteRoleById" parameterType="int">
        delete from smbms.smbms_role
        <where>
            id=#{id}
        where>
    delete>

    <update id="modify" parameterType="role">
        update smbms.smbms_role
        <set>
            <if test="roleCode !=null">
                roleCode=#{roleCode},
            if>
            <if test="roleName !=null">
                roleName=#{roleName},
            if>
        set>
        <where>
            id=#{id}
        where>
    update>

    <select id="getRoleById" parameterType="int" resultType="role">
        select *from smbms.smbms_role
        <where>
            id=#{id}
        where>
    select>

    <select id="roleCodeIsExist" resultType="int">
        select count(*)from smbms.smbms_role
        <where>
            roleCode=#{roleCode}
        where>
    select>
mapper>



3,3,3,RoleTest

package com.zp.dao;

import com.zp.utils.mybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.zp.pojo.Role;

import java.util.List;

public class RoleTest {
    @Test
    public void getRoleList() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        List<Role> roleList = mapper.getRoleList();
        for (com.zp.pojo.Role role : roleList) {
            System.out.println(role);
        }
        sqlSession.close();

    }

    @Test
    public void add() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        Role role = new Role();
        role.setId(4);
        role.setRoleCode("zp");
        role.setRoleName("张Boss");
        mapper.add(role);
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteRoleById() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        mapper.deleteRoleById("4");//字符串类型和整形都可以?
        sqlSession.commit();
        sqlSession.close();

    }

    @Test
    public void modify() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        Role role = new Role();
        role.setRoleCode("zpBoss");
        role.setRoleName("张Boss大大");
        role.setId(4);
        mapper.modify(role);
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void getRoleById()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        Role role = mapper.getRoleById(1);
        System.out.println(role);
        sqlSession.close();
    }

    @Test
    public void roleCodeIsExist()throws Exception{
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
        int cout = mapper.roleCodeIsExist("SMBMS_ADMIN");
        System.out.println(cout);
        sqlSession.close();
    }
}

3,4,User

3,4,1,UserMapper
package com.zp.dao;


import com.zp.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author zp
 * @version 1.0
 * @create 2020/10/26
 */
public interface UserMapper {
    /**
     * @param
     * @param map
     * @return
     * @throws Exception
     */
    //测试数据库是否链接成功
    List<User> getUser(Map<String,Integer>map) throws Exception;

    /**
     * 通过userCode获取User
     *
     * @param userCode
     * @return
     * @throws Exception
     */
    //通过userCode获取User
    public User getLoginUser(@Param("userCode") String userCode) throws Exception;

    /**
     * 增加用户信息
     * insert into
     * @param user
     * @return
     * @throws Exception
     */
    //增加用户信息
    public int add(User user) throws Exception;

    /**
     * 通过条件查询userList,limit分页
     *
     * @param userName
     * @param userRole
     * @return
     * @throws Exception
     */
    //通过条件查询userList,limit分页
    public List<User> getUserList(@Param("userName") String userName,
                                  @Param("userRole") Integer userRole,
                                  @Param("currentPageNO") Integer currentPageNO,
                                  @Param("pageSize") Integer pageSize)throws Exception;

    /**
     *通过条件查询-用户记录数
     * @param userName
     * @param userRole
     * @return
     * @throws Exception
     */
    //通过条件查询-用户记录数
    public int getUserCount(@Param("userName") String userName,
                            @Param("userRole") Integer userRole)throws Exception;

    /**
     * 通过userId删除user
     * delect from
     * @param id
     * @return
     */
    //通过userId删除user
    public int deleteUserById(@Param("id") Integer id);

    /**
     * 通过useId获取user
     * select from
     * @param id
     * @return
     */
    //通过useId获取user
    public User getUserById(@Param("id") Integer id);

    /**
     * 修改用户信息
     * update set
     * @param user
     * @return
     */
    //修改用户信息
    public int modify(User user);

    /**
     * update set
     * @param id
     * @param userPassword
     * @return
     */
    //修改当前用户密码
    public int updatePwd(@Param("id") Integer id, @Param("userPassword") String userPassword);
}





3,4,2,UserMapper.xml


<mapper namespace="com.zp.dao.UserMapper">
    
    
    <select id="getUser" resultType="user">
        select *from smbms.smbms_user limit #{startindex},#{pagesize};
    select>

    
    
    <select id="getLoginUser" parameterType="String" resultType="user">
        select * from smbms.smbms_user
        <trim prefix="where" prefixOverrides="and | or">
            <if test="userCode!=null">
                userCode=#{userCode}
            if>
        trim>
    select>

    
    <insert id="add" parameterType="user">
        insert into smbms.smbms_user (userCode,userName,userPassword,gender,birthday,phone,
        address,userRole,createdBy,creationDate)
         values (#{userCode},#{userName},#{userPassword},#{gender},#{birthday},
         #{phone},#{address},#{userRole},#{createdBy},#{creationDate});
    insert>

    
    <select id="getUserList" parameterType="String" resultType="user">
        select * from smbms.smbms_user
        <where>
            <if test="userName !=null">
                and userName=#{userName}
            if>
            <if test="userRole !=null">
                and userRole=#{userRole}
            if>
        where>
        limit #{currentPageNO},#{pageSize}
    select>

    
    <select id="getUserCount" parameterType="String" resultType="int">
        select count(*)from smbms.smbms_user
        <where>
            userName = #{userName} and userRole = #{userRole}
        where>
    select>
    
    <delete id="deleteUserById">
        delete from smbms.smbms_user where id=#{id}
    delete>

    
    <select id="getUserById" resultType="user">
        select * from smbms.smbms_user
        <where>
            id=#{id}
        where>
    select>

    
    <update id="modify" parameterType="user">
        update smbms.smbms_user
        <set>
            <if test="userCode !=null">
                userCode=#{userCode},
            if>
            <if test="userName !=null">
                userName=#{userName},
            if>
            <if test="phone !=null">
                phone=#{phone}
            if>
        set>
        <where>
            id=#{id}
        where>
    update>

    
    <update id="updatePwd" parameterType="String">
        update smbms.smbms_user
        <set>
            <if test="userPassword !=null">
                userPassword=#{userPassword},
            if>
        set>
        <where>
            id=#{id}
        where>
    update>


mapper>


3,4,3,UserTest
package com.zp.dao;

import com.zp.pojo.User;
import com.zp.utils.mybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class UserTest {
    //测试数据库是否链接成功
    @Test
    public void UserTest() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("startindex", 0);
        map.put("pagesize", 5);
        List<User> userList = mapper.getUser(map);
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }

    //通过userCode获取User
    @Test
    public void getLoginUser() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getLoginUser("admin");
        System.out.println(user);
        sqlSession.close();
    }

    //增加用户信息
    @Test
    public void add() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        int add = mapper.add(new User());
        User user = new User();
        user.setId(16);
        user.setUserCode("zp");
        mapper.add(user);
        sqlSession.commit();
        sqlSession.close();
    }

    //通过条件查询userList,limit分页
    @Test
    public void getUserList() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> admin = mapper.getUserList("李明", 2, 0, 4);
        for (User user : admin) {
            System.out.println(user);
        }
        sqlSession.close();
    }

    //通过条件查询-用户表记录数
    @Test
    public void getUserCount() throws Exception {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int userCount = mapper.getUserCount("张华", 3);
        System.out.println(userCount);
        sqlSession.close();
    }

    //删除用户,通过id
    @Test
    public void deleteUserById() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUserById(16);
        sqlSession.commit();
        sqlSession.close();
    }

    //通过id查询用户
    @Test
    public void getUserById() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        sqlSession.commit();
    }

    //通过id修改用户信息
    @Test
    public void modify() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = new User();
        user.setUserName("修改用户");
        user.setId(5);
        user.setUserCode("hahha");
//      user.setPhone("11111111111");
        mapper.modify(user);
        sqlSession.commit();
        sqlSession.close();
    }

    //修改当前用户密码
    @Test
    public void updatePwd(){
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updatePwd(1,"123456");
        sqlSession.commit();
        sqlSession.close();
    }
}

你可能感兴趣的:(MyBatis课后练习题——(狂神说系列))