MyBatis 的 配置文件开发方式 和 注解开发方式(对数据库进行增删改查)

代码较多,请耐心看完,一定能学会!!!

首先不使用注解方式把环境配置好:

1、目录结构:

2、根据数据库中的 user 表,写一个 user 的实体类 (cn.henu.domain.User.java)

package cn.henu.domain;
import java.util.Date;
public class User {
    private int id;
    private String username;
    private String password;
    private Date birthday;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday=" + birthday +
                '}';
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

3、写一个持久层文件,里面定义一些操作数据库的方法(cn.henu.mapper.UserMapper.java)

package cn.henu.mapper;

import cn.henu.domain.User;
import java.util.List;

public interface UserMapper {
    //插入操作
    public void save(User user);
    //更新操作
    public void update(User user);
    //删除操作
    public void delete(int id);
    //根据id查询
    public User findById(int id);
    //查询全部
    public List<User> findAll();
}

4、写一个映射文件,里面写SQL语句(cn/henu/mapper/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.henu.mapper.UserMapper">

    <insert id="save" parameterType="user">
        insert into user values (#{id},#{username},#{password},#{birthday})
    </insert>

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

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

    <select id="findById" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>

    <select id="findAll" resultType="user">
        select * from user
    </select>
</mapper>

5、编写 Spring 核心配置文件(SqlMapConfig.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标签加载外部的properties文件-->
    <properties resource="jdbc.properties"></properties>
    <!--自定义别名-->
    <typeAliases>
        <typeAlias type="cn.henu.domain.User" alias="user"></typeAlias>
    </typeAliases>

    <!--配置数据源环境-->
    <environments default="developement">
        <environment id="developement">
            <transactionManager type="JDBC"></transactionManager>
            <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>

    <!--加载映射文件-->
    <mappers>
        <mapper resource="cn/henu/mapper/UserMapper.xml"></mapper>
    </mappers>

</configuration>

6、编写一个测试类,来测试这些操作数据库的方法(cn.henu.test.MybatisTest.java)

package cn.henu.test;

import cn.henu.domain.User;
import cn.henu.mapper.UserMapper;
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.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    private UserMapper mapper;
    @Before
    public void before() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        mapper = sqlSession.getMapper(UserMapper.class);
    }

    @Test//测试插入
    public void testSave(){
        User user = new User();
        user.setUsername("tom");
        user.setPassword("abc");
        mapper.save(user);
    }

    @Test//测试更新
    public void testUpdate(){
        User user = new User();
        user.setId(18);
        user.setUsername("lucy");
        user.setPassword("123");
        mapper.update(user);
    }

    @Test//测试删除
    public void testDelete(){
        mapper.delete(18);
    }

    @Test//测试根据id查询用户
    public void testFindById(){
        User user = mapper.findById(2);
        System.out.println(user);
    }

    @Test//测试查询全部用户
    public void testFindAll(){
        List<User> all = mapper.findAll();
        for (User user : all) {
            System.out.println(user);
        }
    }
}

7、执行第6步的每一个Test方法,并且查看数据库中相应的表,都能正确运行,而且能够成功操作数据库。下面在此基础上介绍注解方式


1、将映射文件 UserMapper.xml 中的SQL语句全部使用注解的形式写在 UserMapper.java 中(cn.henu.mapper.UserMapper.java)

package cn.henu.mapper;

import cn.henu.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface UserMapper {
    //插入操作
    @Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
    public void save(User user);
    //更新操作
    @Update("update user set username = #{username},password = #{password} where id = #{id}")
    public void update(User user);
    //删除操作
    @Delete("delete from user where id = #{id}")
    public void delete(int id);
    //根据id查询
    @Select("select * from user where id = #{id}")
    public User findById(int id);
    //查询全部
    @Select("select * from user")
    public List<User> findAll();
}

2、修改 Spring 核心配置文件(SqlMapConfig.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标签加载外部的properties文件-->
    <properties resource="jdbc.properties"></properties>
    <!--自定义别名-->
    <typeAliases>
        <typeAlias type="cn.henu.domain.User" alias="user"></typeAlias>
    </typeAliases>

    <!--配置数据源环境-->
    <environments default="developement">
        <environment id="developement">
            <transactionManager type="JDBC"></transactionManager>
            <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>

    <!--使用注解,加载下面的映射关系-->
    <mappers>
        <!--指定接口所在的包-->
        <package name="cn.henu.mapper"/>
    </mappers>

</configuration>

3、删除映射文件 UserMapper.xml(UserMapper.xml 已经没用了)

4、执行上面第6步的测试类,依然能够正确运行,并且能够成功操作数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值