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
<?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核心配置文件-->
<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>
        <!--<mapper class="com.zp.dao.UserMapper"/>-->
        <!--<mapper resource="com/zp/dao/*.xml"></mapper>-->
        <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包即可

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <!--父工程-->
    <groupId>com.zp</groupId>
    <artifactId>test1</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis-01</module>
        <module>mybatis-02</module>
        <module>mybatis-03</module>
        <module>mybatis-04</module>
        <module>mybatis-05</module>
        <module>Mybatis-06</module>
        <module>mybatis-07</module>
        <module>mybatis-08</module>
        <module>mybatis-09</module>
        <module>mybatis-10</module>
    </modules>


    <!--导入依赖-->
    <dependencies>
        <!--导入lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.4</version>
                <scope>provided</scope>
            </dependency>

        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>com.springsource.org.junit</artifactId>
            <version>4.7.0</version>
        </dependency>
        <!--log4j-->
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>


    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/mian/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/mian/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </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
<?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.zp.dao.BillMapper">

    <!--根据供应商Id查询订单数量-->
    <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>

    <!--通过delId删除Bill-->
    <delete id="deleteBillById" parameterType="int">
        delete from smbms.smbms_bill
        <where>
            id=#{id}
        </where>
    </delete>

    <!--通过billId获取Bill-->
    <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
<?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.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

<?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.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
<?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.zp.dao.UserMapper">
    <!--测试数据库链接是否成功-->
    <!--limit是分页,startindex是从什么时候开始
    pagesize是一页多少条数据-->
    <select id="getUser" resultType="user">
        select *from smbms.smbms_user limit #{startindex},#{pagesize};
    </select>

    <!--//通过userCode获取User-->
    <!--<select id="getLoginUser" resultType="user">
        select * from smbms.smbms_user
        where userCode=#{userCode};
        <where>
        userCode=#{userCode}
        </where>
    </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>

    <!--通过条件查询userList-->
    <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>

    <!--通过条件查询-用户表记录数 String userName, int userRole-->
    <select id="getUserCount" parameterType="String" resultType="int">
        select count(*)from smbms.smbms_user
        <where>
            userName = #{userName} and userRole = #{userRole}
        </where>
    </select>
    <!--删除用户,通过id-->
    <delete id="deleteUserById">
        delete from smbms.smbms_user where id=#{id}
    </delete>

    <!--通过useId获取user-->
    <select id="getUserById" resultType="user">
        select * from smbms.smbms_user
        <where>
            id=#{id}
        </where>
    </select>

    <!--修改用户信息   User user   set会自动去掉逗号-->
    <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();
    }
}

### 回答1: MyBatis是一种使用简便的Java持久化框架,可以很好地实现数据库访问和管理。为了更好地掌握MyBatis狂神老师为我们准备了29道MyBatis练习题。这些题目分为基础篇和进阶篇两部分,主要内容包括MyBatis基础操作、插件、缓存、多表查询、动态SQL等内容。 这些习题不仅覆盖了MyBatis的各个方面,而且具有很高的实用性。通过做这些题目,可以对MyBatis的原理和应用有更清晰的认识,也可以发现和解决实际开发中遇到的问题。 狂神老师精心设计的这些练习题,难易程度逐步递增,让我们在掌握MyBatis的同时,也可以提高自己的编程能力。尤其对初学者来,这些题目可以帮助加深对Java和MyBatis的理解,提高自己的编码能力和代码水平。 总之,狂神老师设计的MyBatis练习题深入浅出,能够帮助我们更好地掌握MyBatis,提高自己的编程能力。值得推荐给所有对MyBatis感兴趣的同学和开发者。 ### 回答2: Mybatis是一款轻量级的持久层框架,可以用于将Java对象映射到关系型数据库上。狂神老师在他的课程中发布了29道Mybatis练习题,让学习者可以通过练习深入掌握Mybatis的用法。 这29道练习题涵盖了Mybatis的最基本用法和高级应用,从最简单的CRUD到缓存、分页、一对多、多对多等高级查询,覆盖Mybatis的完整功能。通过练习这些题目,学习者可以深入理解Mybatis的核心机制和使用技巧,从而更好地应用Mybatis进行项目开发。 此外,狂神老师还为每个练习题提供了详细的讲解和示例代码,让学习者可以通过对比自己的答案,更好地理解Mybatis的实现原理,并通过实战方式学习。 总之,狂神老师发布的Mybatis练习题是一种非常优秀的学习资源,可以帮助学习者深入掌握Mybatis的用法,提升自己的技能水平。学习者可以通过反复练习,掌握Mybatis的精髓,更好地应用于实际项目中,实现高效的数据访问和管理。 ### 回答3: Mybatis是一款非常流行的Java持久化框架,它可以帮助我们更加便捷地实现对象关系映射。狂神在他的视频教程中,提供了29道Mybatis练习题,让我们能够更加深刻地理解Mybatis框架的使用方法和技巧。 这些练习题涵盖了Mybatis框架的各个方面,包括基本CRUD操作、高级查询、动态SQL、缓存机制等等。通过这29道练习题,我们可以逐步提高自己的Mybatis开发水平,掌握更多的技能和经验。 不仅如此, 狂神在这些练习题中还提供了详细的答案和解析,让我们可以更加深入地了解题目涉及到的知识点和细节。这不仅可以加深我们对Mybatis框架的理解,更可以帮助我们在实际项目中更加熟练高效地使用Mybatis。 总之,这29道Mybatis练习题狂神教学的一个重要组成部分,对于想要提高自己的Mybatis开发技能的开发人员来,非常有参考价值。我们可以通过认真练习和思考,不断掌握Mybatis框架的精髓,让自己的技能得到更大的提升。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值