idea创建原始MyBatis maven项目

本文详细介绍了如何使用IntelliJ IDEA创建一个原始的MyBatis Maven项目,包括配置pom.xml、设置db.properties和log4j.properties文件、创建Java实体类、Mapper接口和XML文件,以及进行项目打包和在已有MyBatis项目基础上添加新功能的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建

新建项目–maven项目–填写相关信息–完成
在这里插入图片描述

配置pom.xml

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.24</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

在resource下新建db.properties文件

用来连接数据库

# db.properties
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/demo
db.username=root
db.password=root

新建log4j.properties文件

用来配置log4j日志

#日志文件配置
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

在Java文件里新建包entity及Java类user.java

public class user0 {
    private Long id;
    /**
     * 名称
     */
    private String name;
    /**
     * 用户名
     */
    private Object userName;
    /**
     * 出生日期
     */
    private Date birthday;
    /**
     * 年龄
     */
    private Integer age;
    /**
     * 角色
     */
    private Role role;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getUserName() {
        return userName;
    }

    public void setUserName(Object userName) {
        this.userName = userName;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }
}

在resource下创建mapper文件夹与user.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">
<!--
    namespace:命名空间,主要用于statement分类管理唯一标识符
    注意:在mapper代理模式开发时,这个有另外的特殊作用
-->
<mapper namespace="user">
<!-- 根据 ID 查询数据 -->
    <select id="findUserById" parameterType="long" resultType="包名.entity.User">
        select * from `user` where id=#{id};
    </select>
<insert id="addUser" parameterType="包名.entity.User">
        <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
            select LAST_INSERT_ID()
        </selectKey>
        insert into user(user_name,`name`,birthday,age) values(#{userName},#{name},#{birthday},#{age});
    </insert>

    <!-- 根据ID 更新数据 -->
    <update id="updateById" parameterType="包名.entity.User">
        update user set user_name=#{userName},name=#{name},birthday=#{birthday},age=#{age}
            where id=#{id}
    </update>

    <!-- 根据ID 删除数据 -->
    <delete id="deleteById" parameterType="integer">
        delete from user where id=#{id};
    </delete>
</mapper>

在text下新建包及UserTest.java

public class UserTest {

    private SqlSession sqlSession;

    //该注解用于执行以下 TEST注解方法执行前 初始化
    @Before
    public void init() throws IOException {
//        通过相对路径,加载配置文件
        String resource = "MybatisConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
//        初始化工厂类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        获取sql session
        sqlSession = sqlSessionFactory.openSession();
    }

    @Test
    public void findUserById() {
//        执行查询方法
        User user = sqlSession.selectOne("user.findUserById", 1L);
        System.err.println(user.toString());
    }

    @Test
    public void addUser() {
//        新增一个用户
        User user = new User();
        user.setUserName("xiaoyi");
        user.setName("小一");
        user.setBirthday(new Date());
        user.setAge(11);

        sqlSession.insert("user.addUser", user);
        System.err.println(user.toString());
        sqlSession.commit();
        System.err.println(user.toString());
    }

    @Test
    public void updateById() {
//        更新数据
        User user = new User();
        user.setId(1L);
        user.setUserName("xiaosan");
        user.setName("小三");
        user.setAge(12);
        user.setBirthday(new Date());
        sqlSession.update("user.updateById", user);
        sqlSession.commit();
    }

    @Test
    public void deleteById() {
//        删除一条数据
        sqlSession.delete("user.deleteById", 2);
        sqlSession.commit();
    }

    //用于 TEST注解 方法执行后 关闭资源
    @After
    public void destroy() {
        sqlSession.close();
    }
}

使用maven命令打包项目

mvn clean install -Dmaven.test.skip=true

可能会出现错误:No compiler is provided in this environment. Perhaps you are running on a JRE
解决方案
maven安装目录下的bin中的mvn.cmd文件中在第一行加一行代码就可以了

set JAVA_HOME=D:\develop\java

在原始mybatis项目基础上跟进

在原来的包下新建mapper包,新建UserMapper.java
public interface UserMapper {

    User findUserById(Long id);

    List<User> findUserByName(String userName);

    void addUser(User user);

    void updateById(User user);

    void deleteById(Integer id);
}
在resource/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">
<!--
    namespace:命名空间,主要用于statement分类管理唯一标识符
    注意:在mapper代理模式开发时,这个有另外的特殊作用
-->
<mapper namespace="包名.mapper.UserMapper">

    <!-- 根据 ID 查询数据 -->
    <select id="findUserById" parameterType="long" resultType="包名.entity.User">
        select * from `user` where id=#{id};
    </select>

    <!-- ${}内必须写value -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="com.hand.myc.entity.User">
        select * from `user` where user_name like '%${value}%';
    </select>

    <!--
        只要主键不是自增,selectKey中order设置为BEFORE,需要给显示赋值
        Oracle的Seq是要order设为BEFORE来获取的
    -->
    <insert id="addUser" parameterType="包名.entity.User">
        <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
            select LAST_INSERT_ID()
        </selectKey>
        insert into user(user_name,`name`,birthday,age) values(#{userName},#{name},#{birthday},#{age});
    </insert>

    <!-- 根据ID 更新数据 -->
    <update id="updateById" parameterType="包名.entity.User">
        update user set user_name=#{userName},name=#{name},birthday=#{birthday},age=#{age}
            where id=#{id}
    </update>

    <!-- 根据ID 删除数据 -->
    <delete id="deleteById" parameterType="integer">
        delete from user where id=#{id};
    </delete>
</mapper>
在test下新建测试类UserMapperTest.java
public class UserMapperTest {

    private SqlSession sqlSession;

    private UserMapper userMapper;

    //该注解用于执行以下 TEST注解方法执行前 初始化
    @Before
    public void init() throws IOException {
//        通过相对路径,加载配置文件
        String resource = "MybatisConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
//        初始化工厂类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        获取sql session
        sqlSession = sqlSessionFactory.openSession();
//        获取对应的接口实现对象
        userMapper = sqlSession.getMapper(UserMapper.class);
    }

    @Test
    public void findUserById() {
//        执行查询方法
        User user = userMapper.findUserById(1L);
        System.out.println(user.toString());
    }

    @Test
    public void findUserByName() {
//        执行查询方法
        List<User> users = userMapper.findUserByName("xiaosi");
        System.out.println(users.size());
    }

    @Test
    public void addUser() {
//        新增一个用户
        User user = new User();
        user.setUserName("xiaosi");
        user.setName("小四");
        user.setBirthday(new Date());
        user.setAge(12);

        userMapper.addUser(user);
        System.err.println(user.toString());
        sqlSession.commit();
        System.err.println(user.toString());
    }

    @Test
    public void updateById() {
//        更新数据
        User user = new User();
        user.setId(5L);
        user.setUserName("xiaowu");
        user.setName("小五");
        user.setAge(13);
        user.setBirthday(new Date());
        userMapper.updateById(user);
        sqlSession.commit();
    }

    @Test
    public void deleteById() {
//        删除一条数据
        userMapper.deleteById(1);
        sqlSession.commit();
    }

    //用于 TEST注解 方法执行后 关闭资源
    @After
    public void destroy() {
        sqlSession.close();
    }
}
结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值