Mybatis使用映射配置文件的CRUD操作

Mybatis使用映射配置文件的CRUD操作

1.实体类

 public class User implements Serializable {
     private Integer id;
     private String username;
     private Date birthday;
     private String sex;
     private String address;
  //set,get,tostring方法省略
 }

2.dao接口

 public interface IUserDao {
 
     List<User> findAll();
 
     void saveUser(User user);
 
     void updateUser(User user);
 
     void deleteUser(Integer userId);
 }

3.主配置文件

 <?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">
 
 <!--mybatis的主配置文件-->
 <configuration>
     <!--配置环境-->
     <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/eesy?serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8&amp;useSSL=false" />
                 <property name="username" value="root" />
                 <property name="password" value="123456" />
             </dataSource>
         </environment>
     </environments>
 
     <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
     <mappers>
         <mapper resource="com/itheima/dao/IUserDao.xml"/>
     </mappers>
 </configuration>

4.映射配置文件

 <?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.itheima.dao.IUserDao">
     <!--配置查询所有-->
     <select id="findAll" resultType="com.itheima.domain.User">
         select * from user;
     </select>
 
     <!--保存用户,参数名字和实体类属性名一样-->
     <insert id="saveUser" parameterType="com.itheima.domain.User">
         insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday});
     </insert>
 
     <!--更新用户-->
     <update id="updateUser" parameterType="com.itheima.domain.User">
         update user set username = #{username},address = #{address},sex = #{sex},birthday = #{birthday} where id = #{id};
     </update>
 
     <!--删除用户,参数只有一个时,#{}中随便写-->
     <delete id="deleteUser" parameterType="com.itheima.domain.User">
         delete from user where id = #{uid}
     </delete>
 </mapper>

5.日志配置

 ### 设置###
 log4j.rootLogger = debug,CONSOLE,LOGFILE
 
 log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE
 
 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
 
 ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
 log4j.appender.LOGFILE = org.apache.log4j.FileAppender
 log4j.appender.LOGFILE.FILE = F://logs/error.log
 log4j.appender.LOGFILE.Append = true
 log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout
 log4j.appender.LOGFILE.layout.ConversionPattern = %d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

6.测试类

 package com.itheima;
 
 import com.itheima.dao.IUserDao;
 import com.itheima.domain.User;
 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 javax.annotation.Resource;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Date;
 import java.util.List;
 
 /**
  * @Author: lijiahao
  * @Description:
  * @Data: Create in 22:56 2020/2/22
  * @Modified By:
  */
 public class test {
 
     private InputStream in;
     private SqlSession sqlSession;
     private IUserDao userDao;
 
     @Before
     public void init() throws IOException {
         //1.读取配置文件
         in = Resources.getResourceAsStream("SqlMapConfig.xml");
         //2.创建SqlSessionFactory工厂
         SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
         SqlSessionFactory sqlSessionFactory =  sqlSessionFactoryBuilder.build(in);
         //3.使用工厂生产SqlSession对象
         sqlSession = sqlSessionFactory.openSession();
         //4.使用SqlSession创建dao接口的代理对象
         userDao = sqlSession.getMapper(IUserDao.class);
    }
 
     @After
     public void destory() throws IOException {
         //提交事务
         sqlSession.commit();
         //6.释放资源
         sqlSession.close();
         in.close();
    }
 
     @Test
     public void testFindAll() throws IOException {
         //5.使用代理对象执行方法
         List<User> users = userDao.findAll();
         for(User user : users){
             System.out.println(user);
        }
    }
 
     /*测试保存操作*/
     @Test
     public void testSave() throws IOException {
         User user1 = new User();
         user1.setUsername("mybatis saveuser");
         user1.setAddress("北京市");
         user1.setSex("女");
         user1.setBirthday(new Date());
 
         //5.执行保存方法
         userDao.saveUser(user1);
    }
 
     /*测试更新操作*/
     @Test
     public void testUpdate() throws IOException {
         User user1 = new User();
         user1.setId(47);
         user1.setUsername("asdasdasd");
         user1.setAddress("北京市");
         user1.setSex("女");
         user1.setBirthday(new Date());
 
         //5.执行保存方法
         userDao.updateUser(user1);
    }
 
     /*测试删除操作*/
     @Test
     public void testDelete() throws IOException {
         //5.执行保存方法
         userDao.deleteUser(42);
    }
 }
 

 

猜你喜欢

转载自www.cnblogs.com/lijiahaoAA/p/12355061.html