mybatis入门demo

  1. 创建数据库
  2. mysql创建user表
    复制代码
    CREATE TABLE `user`  (
      `id` int(32) NOT NULL COMMENT 'id\r\n',
      `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `sex` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `birthday` date NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    SET FOREIGN_KEY_CHECKS = 1;
    复制代码
  3. 创建maven普通工程mybatis-parent,删除src目录,添加mybatis依赖。

    复制代码
    <!--添加mybatis依赖-->
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.3</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>
    复制代码
  4. 创建子模块mybatis-01
  5. resources目录下创建配置文件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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/qiaob/mapper/UserMapper.xml"/>
        </mappers>
    </configuration>
    View Code
    复制代码
  6. 封装mybatis工具类
    复制代码
    package com.qiaob.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 org.junit.Test;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class MybatisUtils {
        static {
            //使用mybatis第一步:获取sqlSessionFactory对象
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = null;
                inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        private static SqlSessionFactory sqlSessionFactory;
    
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
        }
    
    
    }
    View Code
    复制代码
  7. 生成pojo实体类
    复制代码
    package com.qiaob.pojo;
    
    import java.util.Date;
    
    public class User {
        private int id;
        private String name;
        private String sex;
        private Date birthday;
    
        public User() {
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", birthday=" + birthday +
                    '}';
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    }
    View Code
    复制代码
  8. 生成mapper数据层接口
    复制代码
    package com.qiaob.mapper;

    import com.qiaob.pojo.User;

    import java.util.ArrayList;

    public interface UserMapper {
    //查询所有
    public ArrayList<User> getUserList();

    //根据id查询某个
    public User getUserById(int id);


    //插入用户
    public int addUser(User user);

    //更新用户
    public int updateUser(User user);

    //删除用户
    public int deleteUser(int id);

    }
    复制代码

 

8.  在resources相同层级目录下创建UserMapper.xml

<mapper namespace="com.qiaob.mapper.UserMapper">:代表实现哪个mapper的接口方法
id="getUserList" :对应mapper的方法名

resultType="com.qiaob.pojo.User":对应返回集类型
parameterType="com.qiaob.pojo.User":sql中可以直接调用属性
sqlSession.commit():mybatis要手工提交事务才生效
 
复制代码
<?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.qiaob.mapper.UserMapper">
<select id="getUserList" resultType="com.qiaob.pojo.User">
select * from mybatis.user
</select>

<select id="getUserById" resultType="com.qiaob.pojo.User" parameterType="int">
select * from mybatis.user where id = #{id}
</select>

<insert id="addUser" parameterType="com.qiaob.pojo.User">
insert into mybatis.user(id, name, sex, birthday) values (#{id},#{name},#{sex},#{birthday})
</insert>
<update id="updateUser" parameterType="com.qiaob.pojo.User">
update mybatis.user set birthday = #{birthday} where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id =#{id}
</delete>
</mapper>
复制代码
 

 

9.创建单元测试类
  • 获得指定日期的方法
1
2
3
4
5
6
7
SimpleDateFormat sdf =  new SimpleDateFormat( "yyyy-MM-dd" );
       Date d = null ;
       try {
            d = sdf.parse( "2018-03-09" );
       catch (ParseException e) {
           e.printStackTrace();
       }

  

 
复制代码
package com.qiaob.dao;

import com.qiaob.mapper.UserMapper;
import com.qiaob.pojo.User;
import com.qiaob.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class UserDaoTest {
    @Test
    public void testUserList(){
        //第一步:获得sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //第二步:执行sql
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        ArrayList<User> userList = mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }

        //第三步:关闭sqlSession
        sqlSession.close();
    }


    @Test
    public  void testGetUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);

        sqlSession.close();
    }

    @Test
    public  void testSaveUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        User user = new User(3, "乔逸之", "1", new Date());
        int num = mapper.addUser(user);

        System.out.println(num);

        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void testUpdate(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d =null;
        try {
             d = sdf.parse("2018-03-09");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        mapper.updateUser(new User(3,"乔逸之","1",d));

        sqlSession.commit();
        sqlSession.close();
    }


    @Test
    public void testDeleteUser( ){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(3);
        sqlSession.commit();
        sqlSession.close();
    }

}
复制代码

 

 补充:如果想将mapper.xml和mapper放在同一路径下,则需要在pom文件中增加导出过滤,见博客《关于在maven项目中配置文件资源导出问题》。

 
posted @   qiaoyizhi  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示