• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

mybatis入门案例

mybatis入门案例

1、准备工作

  • 创建数据库表(数据库表自己准备)

  • 创建项目导入mybatis和数据库驱动jar包

    • 本例使用的maven项目,数据库是8.0及以上(数据库驱动包根据版本调整)

    <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.4.5</version>
     </dependency>
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.11</version>
    </dependency>

2、创建与数据库表对应的实体类

  • 属性名要和数据库表一样

package com.yl.bean;
​
import java.io.Serializable;
import java.sql.Date;
​
/**
* 用户实体类
*/
public class User implements Serializable {
   private Integer id;//id
   private String username;//用户名
   private Date birthday;//生日
   private String sex;//性别
   private String address;//地址
​
   public User() {
  }
​
   public Integer getId() {
       return id;
  }
​
   public void setId(Integer id) {
       this.id = id;
  }
​
   public String getUsername() {
       return username;
  }
​
   public void setUsername(String username) {
       this.username = username;
  }
​
   public Date getBirthday() {
       return birthday;
  }
​
   public void setBirthday(Date birthday) {
       this.birthday = birthday;
  }
​
   public String getSex() {
       return sex;
  }
​
   public void setSex(String sex) {
       this.sex = sex;
  }
​
   public String getAddress() {
       return address;
  }
​
   public void setAddress(String address) {
       this.address = address;
  }
​
   @Override
   public String toString() {
       return "User{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", birthday=" + birthday +
               ", sex='" + sex + '\'' +
               ", address='" + address + '\'' +
               '}';
  }
}
​

3、创建持久层接口

package com.yl.dao;
​
import com.yl.bean.User;
​
import java.util.List;
​
/**
* 用户持久层接口
*/
public interface IUserDao {
​
   /**
    * 查询所有用户
    */
   List<User> queryAllUser();
​
   /**
    * 添加用户
    */
   void addUser(User user);
​
   /**
    * 修改用户
    */
   void updateUser(User user);
​
   /**
    * 根据id删除用户
    */
   void deleteUser(int id);
​
}
​
​

4、创建mybatis全局配置文件(SqlMapperConfig.xml)

  • 配置文件放在资源目录下,如果不是maven工程就放在根目录下

<?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>
   <!--配置mybatis环境-->
   <environments default="mysql">
       <!--配置mysql环境-->
       <environment id="mysql">
           <!--事务类型-->
           <transactionManager type="JDBC"></transactionManager>
           <!--数据源(连接池),根据数据库版本调整-->
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&amp;serverTimezone=GMT%2B8"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
​
   <!--指定映射配置文件位置,根据实际路径-->
   <mappers>
       <mapper resource="com/yl/dao/IUserDao.xml"></mapper>
   </mappers>
</configuration>

5、创建持久层映射文件(IUserDao.xml)

  • 配置文件放在资源目录下,如果不是maven工程就放在根目录下

<?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.yl.dao.IUserDao">
   <!--查询所有用户,id是方法名,resultType是对应的实体类全限定类名-->-->
   <select id="queryAllUser" resultType="com.yl.bean.User">
      select * from user
   </select>
   <!--添加用户-->
   <insert id="addUser" parameterType="com.yl.bean.User">
      insert into user values (null,#{username},#{birthday},#{sex},#{address})
   </insert>
   <!--修改用户-->
   <update id="updateUser" parameterType="com.yl.bean.User">
      update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
   </update>
   <!--删除用户-->
   <!--关于参数类型的写法:基本类型和String我们可以直接写类型名称,也可以使用包名.类名的方式 ,例如 :java.lang.String。
   实体类类型,目前我们只能使用全限定类名。究其原因,是 mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以
不写包名,而我们的是实体类并没有注册别名,所以必须写全限定类名-->
   <delete id="deleteUser" parameterType="java.lang.Integer">
      delete from user where id=#{id}
   </delete>
</mapper>

6、测试

package com.yl;
​
import static org.junit.Assert.assertTrue;
​
import com.yl.bean.User;
import com.yl.dao.IUserDao;
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.After;
import org.junit.Before;
import org.junit.Test;
​
import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.util.List;
​
​
public class AppTest {
   private InputStream inputStream;
   private IUserDao userDao;
   private SqlSession sqlSession;
​
   @Before
   public void init() throws IOException {
       //读取配置文件
       inputStream= Resources.getResourceAsStream("SqlMapperConfig.xml");
       //创建工厂
       SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
       SqlSessionFactory sessionFactory= factoryBuilder.build(inputStream);
       //创建SqlSession对象
       sqlSession=sessionFactory.openSession();
       //创建IUserDao接口代理对象
       userDao=sqlSession.getMapper(IUserDao.class);
  }
​
   @After
   public void after() throws IOException {
       //提交事务
       sqlSession.commit();;
       //关闭资源
       sqlSession.close();
       inputStream.close();
  }
​
   /**
    * 查询所有
    */
   @Test
   public void test01() throws IOException {
       //查询所有用户
       List<User> userList=userDao.queryAllUser();
       //遍历输出
       userList.forEach(System.out::println);
  }
​
   /**
    * 添加用户
    */
   @Test
   public void test02(){
       User user=new User();
       user.setUsername("yl001");
       user.setAddress("广州");
       user.setBirthday(new Date(System.currentTimeMillis()));
       user.setSex("男");
​
       userDao.addUser(user);
  }
​
   /**
    * 修改用户
    */
   @Test
   public void test03(){
       User user=new User();
       user.setId(61);
       user.setUsername("yl003");
       user.setAddress("广州");
       user.setBirthday(new Date(System.currentTimeMillis()));
       user.setSex("男");
​
       userDao.updateUser(user);
​
  }
​
   /**
    * 删除用户
    */
   @Test
   public void test04(){
       userDao.deleteUser(61);
  }
}

 

记得快乐
posted @ 2020-10-10 11:05  Y-wee  阅读(133)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3