美文网首页
Maven项目集成Mybatis增删改查操作(一)

Maven项目集成Mybatis增删改查操作(一)

作者: 乘风破浪的姐姐 | 来源:发表于2021-12-09 19:36 被阅读0次

1、新建Maven项目,在pom.xml中导入依赖
数据库要使用Mysql,需导入mysql包
接口测试要使用到junit,需导入junit包
使用Mybatis框架,需要导入mybatis包

 <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>

2、项目运行时要加载配置文件,pom.xml中需要加入

  <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

3、在resource下创建db.properties

driver=com.mysql.cj.jdbc.Driver
url= jdbc:mysql://w-bzrds-lavj.service.testdb:3306/member_dy?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=member_dy
password=123456

4、在resource下创建 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="db.properties"/>
   <typeAliases >
<!--        <typeAlias type="com.sc.pojo.TdyMemberInfo" alias="TdyMemberInfo"/>-->
        <package name="com.sc.pojo"/>
    </typeAliases>
    <!-- 设置一个默认的连接环境信息 -->
    <environments default="mysql_developer">

        <!-- 连接环境信息,取一个任意唯一的名字 -->
        <environment id="mysql_developer">
            <!-- mybatis使用jdbc事务管理方式 -->
            <transactionManager type="jdbc"/>
            <!-- mybatis使用连接池方式来获取连接 -->
            <dataSource type="pooled">
                <!-- 配置与数据库交互的4个必要属性 -->
                <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 resource="com/sc/dao/TdyMemberInfoMapper.xml"/>
    </mappers>

</configuration>

上述配置文件中<properties> 属性来实现引用配置文件,resource中填写文件名称的前提是db.properties是直接存放在resource目录下。
< typeAliases>属性为Java 类型设置一个缩写名字,意在降低冗余的全限定类名书写。
typeAlias指定具体的实体类,package直接指定需要的包名,
Mybatis会在包名下面搜索需要的Java Bean,
比如:扫描实体类的包,它的默认别名就为这个类的类名,首字母小写
<environments>可以配置成多套环境,Mybatis默认的事务管理器就是JDBC,<transactionManager type="JDBC"/>
连接池POOLED, <dataSource type="POOLED ">

5、创建实体类 TdyMemberInfo.class

package com.sc.pojo;

import java.math.BigDecimal;
import java.util.Date;

public class TdyMemberInfo {
    private Long memberId;
    private Long shopId;
    private String memberNo;
    private String mobile;
    private String openId;
 

    public Long getMemberId() {
        return memberId;
    }

    public Long getShopId() {
        return shopId;
    }

   public String getMemberNo() {
        return memberNo;
    }
 
    public String getMobile() {
        return mobile;
    }

    public String getOpenId() {
        return openId;
    }
    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public void setMemberNo(String memberNo) {
        this.memberNo = memberNo;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }

    
    public TdyMemberInfo() {
    }

    public TdyMemberInfo(Long memberId, Long shopId, String memberNo, String mobile, String openId) {
        this.memberId = memberId;
        this.shopId = shopId;
        this.memberNo = memberNo;
        this.mobile = mobile;
        this.openId = openId;
    }
}

6、创建TdyMemberInfoDao.class

package com.sc.dao;

import com.sc.pojo.TdyMemberInfo;

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

public interface TdyMemberInfoDao {
    List<TdyMemberInfo> selectAllmember();

    /**
     * 根据手机号模糊查 询
     * @param value
     * @return
     */
    List<TdyMemberInfo> selectLikeMember(String value);

    int addMember(TdyMemberInfo tdyMemberInfo);
    int addMemberByMap(Map<String,Object>map);
    int updateMember(TdyMemberInfo tdyMemberInfo);
    int deleteMember(long memberId);
}

7、创建Mapper文件,TdyMemberInfoMapper.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" >
<!--上面2行的是约束依赖,固定照抄就好-->
<!--下面的才是要自己编写的地方-->
<!--写mapper的配置文件第一步就是要写<mapper></mapper>标签-->
<!--<mapper></mapper>标签里包含着各个CURD操作的SQL语句-->
<mapper namespace="com.sc.dao.TdyMemberInfoDao">

    <!--查找语句-->
    <select id="selectAllmember" resultType="TdyMemberInfo">
        select * from t_dy_member_info
    </select>

    <select id="selectLikeMember" parameterType="string" resultType="TdyMemberInfo">
        select * from t_dy_member_info where mobile like #{value}
    </select>

    <!--#{memberNo},#{mobile}必须是TdyMemberInfo中对 应的字段名称-->
    <insert id="addMember" parameterType="TdyMemberInfo">
        INSERT INTO t_dy_member_info
        (shop_id,member_no,mobile,open_id)
        VALUES (9730231,#{memberNo},#{mobile},#{openId})
    </insert>

   <insert id="addMemberByMap" parameterType="map">
        INSERT INTO t_dy_member_info
           (shop_id,member_no,mobile,open_id)
        VALUES (9730231,#{memberNo},#{mobile},#{openId})
   </insert>


    <update id="updateMember" parameterType="TdyMemberInfo">
        update t_dy_member_info set open_id=#{openId} ,member_no=#{memberNo} where member_id =#{memberId}
    </update>

    <delete id="deleteMember" parameterType="long">
        delete from t_dy_member_info where member_id=#{memberId}
    </delete>

</mapper>

8、创建MyBatis工具类MyBatisUtils.class
使用Mybatis第一步,获取SqlSessionFactory对象 ,然后通过SqlSessionFactory对象获得SqlSession的实例
SqlSession 完全包含了面向数据库执行SQL 命令所需的所有方法

package com.sc.config;

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;

public class MyBatisUtils {
    private static SqlSessionFactory factory;
    static {
        String resource = "mybatis-config.xml";
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream(resource);
            factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return factory.openSession();
    }

}

9、创建测试类,MemberDaoTest.class

package dao;

import com.sc.config.MyBatisUtils;
import com.sc.dao.TdyMemberInfoDao;
import com.sc.pojo.TdyMemberInfo;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

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

public class MemberDaoTest {

    @Test
    public void selectAll(){
       SqlSession sqlSession =  MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        List<TdyMemberInfo> allMembers = mapper.selectAllmember();
        for(TdyMemberInfo member:allMembers){
            System.out.println(member);
        }
        sqlSession.close();
    }

    @Test
    public void selectLikeMember(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        List<TdyMemberInfo> tdyMemberInfos = mapper.selectLikeMember("18660467%");
        for (TdyMemberInfo tdyMemberInfo : tdyMemberInfos) {
            System.out.println(tdyMemberInfo);
        }
        sqlSession.close();
    }

    @Test
    public void addMember(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        TdyMemberInfo tdyMemberInfo = new TdyMemberInfo();
        tdyMemberInfo.setMemberNo("20211209100001");
        tdyMemberInfo.setMobile("18660467744");
        tdyMemberInfo.setOpenId("PDH2JKKE3JUKAG6M7VOX4");

        int code = mapper.addMember(tdyMemberInfo);
        if(code>0){
            System.out.println("新增员工成功。");
        }
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void addMemberByMap(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        Map<String,Object> map = new HashMap<>();
        map.put("no","20211209100002");
        map.put("mobile","18660467799");
        map.put("open","111PDH2JKKE3JUKAG111");

        int code = mapper.addMemberByMap(map);
        if(code>0){
            System.out.println("使用Map传参,新增员工成功。");
        }
        sqlSession.commit();
        sqlSession.close();
    }



    @Test
    public void updateMember(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        TdyMemberInfo tdyMemberInfo = new TdyMemberInfo();
        tdyMemberInfo.setMemberId(new Long(479));
        tdyMemberInfo.setMemberNo("20211209100001111");
        tdyMemberInfo.setOpenId("PDH2JKKE3JUKAG6M7VOX4555");
        int code = mapper.updateMember(tdyMemberInfo);
        if(code>0){
            System.out.println("修改员工成功。");
        }
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteMember(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        TdyMemberInfoDao mapper = sqlSession.getMapper(TdyMemberInfoDao.class);
        int code = mapper.deleteMember(new Long(479));
        if(code>0){
            System.out.println("删除员工成功。");
        }
        sqlSession.commit();
        sqlSession.close();
    }
}

项目如下:


image.png

测试结果:


image.png

相关文章

网友评论

      本文标题:Maven项目集成Mybatis增删改查操作(一)

      本文链接:https://www.haomeiwen.com/subject/iagffrtx.html