mybatis开发入门

1、建立工程,使用MySQL数据库
2、导入mybatis的jar包,数据库连接jar包
3、src下新建mybatis的全局配置文件SqlMapperConfig.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"></properties>

    <!-- 别名设置,扫包方式为类设置别名,xml中使用时直接写类型即可(首字母大小写都可以),不用加入包路径了  -->
    <typeAliases>
        <package name="cn.bfule.po" />
    </typeAliases>

    <!-- mybatis运行环境,不用理会,到跟spring整合后无效 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    <!--导入mapper。xml,通过扫包的方式 配置mapper。xml文件 ,再与spring整合后无用配置 -->
    <mappers>
        <package name="cn.bfulle.mapper" />
    </mappers>
</configuration>

4、操作数据库肯定得有数据库和表,编写pojo类来对应数据库中的表
5、编写mapper.java接口和mapper.xml文件(mapper.java和mapper.xml文件名要一致且在同一包名目录下),mapper.java中的方法要与mapper.xml文件定义的statement对应,mapper.xml文件的namespace就是mapper.java接口的全路径(报名+类名)
UserMapper.java

package cn.bfulle.mapper;

import java.util.List;

import cn.bfule.po.User;
import cn.bfule.po.UserCustom;
import cn.bfule.po.UserQueryVo;

public interface UserMapper {
    /**
     * 说明:
     * 方法名是mapper.xml中statement的id
     * 方法的参数是mapper.xml中statement的parameterType
     * 方法返回值是mapper.xml中statement的resultType
     */
    public User queryById(String id) throws Exception;
    public List<UserCustom> query(UserQueryVo userQueryVo) throws Exception;
    public void addUser(User user) throws Exception;
    public void deleteUser(String id) throws Exception;
    public void modifyUser(User user) throws Exception;
}

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="cn.bfulle.mapper.UserMapper"><!--namespace就是mapper.java接口的全路径(报名+类名)  -->

    <!-- id就是接口中的方法名,parameterType是方法的参数类型,resultType方法的返回值类型 -->
    <select id="queryById" parameterType="string" resultType="user">
        select * from user where id=#{id}
    </select>

    <sql id="querySql">
        <where>
            <if test="userCustom!=null">
                <if test="userCustom.id!=null and userCustom.id!=''">
                    and id=#{userCustom.id}
                </if>
                <if test="userCustom.username!=null and userCustom.username!=''">
                    and username like #{userCustom.username}
                </if>
                <if test="userCustom.password!=null and userCustom.password!=''">
                    and password=#{userCustom.password}
                </if>
            </if>
        </where>
    </sql>

    <select id="query" parameterType="UserQueryVo" resultType="userCustom">
        select * from user 
        <include refid="querySql"></include>
    </select>

    <insert id="addUser" parameterType="user">
        insert into user (id,username,password,age,birthday,sex) value(#{id},#{username},#{password},#{age},#{birthday},#{sex})
    </insert>

    <delete id="deleteUser" parameterType="string">
        delete from user where id=#{id}
    </delete>

    <update id="modifyUser" parameterType="user">
        update user set id=#{id},username=#{username},password=#{password},age=#{age},birthday=#{birthday},sex=#{sex} where id=#{id}
    </update>



</mapper>

6、测试,由于SqlSession线程不安全,所以必须定义在方法体内

package cn.bfulle.mapper;

import static org.junit.jupiter.api.Assertions.fail;

import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.UUID;

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 org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import cn.bfule.po.User;
import cn.bfule.po.UserCustom;
import cn.bfule.po.UserQueryVo;

class UserMapperTest {
    static SqlSessionFactory factory = null;

    @BeforeAll
    static void setUpBeforeClass() throws Exception {
        InputStream inputStream = Resources.getResourceAsStream("SqlMapperConfig.xml");
        factory = new SqlSessionFactoryBuilder().build(inputStream);
    }

    @BeforeEach
    void setUp() throws Exception {
    }

    @Test
    void testQueryById() throws Exception {
        SqlSession sqlSession = factory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.queryById("25409761-72e8-43ca-bf34-d6091862cb44");
        System.out.println(user);
    }

    @Test
    void testQuery() throws Exception {
        SqlSession sqlSession = factory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        UserQueryVo userQueryVo=new UserQueryVo();
        UserCustom userCustom=new UserCustom();
        //userCustom.setId("24016c63-5863-491a-9d71-2a068672dff0");
        userCustom.setUsername("%张三%");
        userCustom.setPassword("");
        userQueryVo.setUserCustom(userCustom);
        List<UserCustom> users = userMapper.query(userQueryVo);
        System.out.println(users);
    }

    @Test
    void testAddUser() throws Exception {
        SqlSession sqlSession = factory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user=new User(UUID.randomUUID().toString(), "张三", "123456", 22, new Date(), 1);
        System.out.println(user);
        userMapper.addUser(user);
        sqlSession.commit();
    }

    @Test
    void testDeleteUser() {
        fail("Not yet implemented");
    }

    @Test
    void testModifyUser() {
        fail("Not yet implemented");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值