发表于: 2019-12-15 18:56:13

1 1093


今天完成的事情:

1.编写了使用mybatis增删改查的测试

1)User

package com.mybatisCRUD.beans;

public class User {
private int id;
   private String name;
   private String pwd;
   public  User(){};
   public  User(String name,String pwd){
this.name=name;
       this.pwd=pwd;
   }

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 getPwd() {
return pwd;
   }

public void setPwd(String pwd) {
this.pwd = pwd;
   }

@Override
   public String toString() {
return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
   }
}

2)UserMapper

package com.mybatisCRUD.mapper;

import com.mybatisCRUD.beans.User;

import java.util.List;

public interface UserMapper {

public int insertUser(User user) throws Exception;

   public int updateUser(User user, int id) throws Exception;

   public int deleteUser(int id) throws Exception;

   public User selectUserById(int id) throws Exception;

   public List<User> selectAllUser() throws Exception;
}

3)UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.mybatis.mapper.UserMapper">
   <!-- 自定义返回结果集 -->
   <resultMap id="userMap" type="User">
       <id property="id" column="id" javaType="java.lang.Integer"></id>
       <result property="username" column="username" javaType="java.lang.String"></result>
       <result property="password" column="password" javaType="java.lang.String"></result>
       <result property="account" column="account" javaType="java.lang.Double"></result>
   </resultMap>
   <!-- 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。
   parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型-->
   <!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys
               方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 -->
   <!--keyProperty: (仅对 insert有用)标记一个属性,
   MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 -->
   <!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值  -->


   <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
       insert into user (name, pwd)
values (#{name}, #{pwd})
</insert>

   <update id="updateUser">
       update user
set name=#{name},
pwd=#{pwd}
where id = #{id}
</update>

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

   <select id="selectUserById" parameterType="int" resultMap="userMap">
       select *
       from user
where id = #{id}
</select>

   <select id="selectAllUser" resultMap="userMap">
       select *
       from user
</select>
</mapper>

4)DBTools

package com.mybatisCRUD.tools;

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 java.io.Reader;

public class DBTools {
public static SqlSessionFactory sessionFactory;

   static{
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
           Reader reader = Resources.getResourceAsReader("mybatis.xml");
           //构建sqlSession的工厂
           sessionFactory = new SqlSessionFactoryBuilder().build(reader);
       } catch (Exception e) {
e.printStackTrace();
       }

}
//创建能执行映射文件中sql的sqlSession
   public static SqlSession getSession(){
return sessionFactory.openSession();
   }
}

5)UserServiceTest

package com.mybatisCRUD.service;

import com.mybatisCRUD.beans.User;
import com.mybatisCRUD.mapper.UserMapper;
import com.mybatisCRUD.tools.DBTools;
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import java.util.List;

public class UserServiceTest {
@Test
   //添加操作
   public void insertUser() throws Exception {
SqlSession session = DBTools.getSession();
       UserMapper mapper = session.getMapper(UserMapper.class);
       User user = new User("多多","qq22222");
       try {
mapper.insertUser(user);
           System.out.println(user.toString());
           session.commit();
       } catch (Exception e) {
e.printStackTrace();
           session.rollback();
       }
}

@Test
   //删除操作
   public void deleteUser() throws Exception {
SqlSession session=DBTools.getSession();
       UserMapper mapper=session.getMapper(UserMapper.class);
       try {
mapper.deleteUser(1);
           session.commit();
       } catch (Exception e) {
e.printStackTrace();
           session.rollback();
       }
}

@Test
   //选择操作
   public void selectUserById() throws Exception {
SqlSession session=DBTools.getSession();
       UserMapper mapper=session.getMapper(UserMapper.class);
       try {
//这里用到User类的无参构造方法创建对象,User user=new User();
           User user =mapper.selectUserById(2);
           System.out.println(user.toString());

           session.commit();
       } catch (Exception e) {
e.printStackTrace();
           session.rollback();
       }
}

@Test
   public void selectAllUser() throws Exception {
SqlSession session= DBTools.getSession();
       UserMapper mapper=session.getMapper(UserMapper.class);
       try {
List<User> user=mapper.selectAllUser();
           System.out.println(user.toString());
           session.commit();
       } catch (Exception e) {
e.printStackTrace();
           session.rollback();
       }
}
}

6)mabatis.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 resource="db.properties"></properties>

   <!-- 配置mybatis运行环境 -->
   <environments default="development">
       <environment id="development">
           <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
           <transactionManager type="JDBC" />

           <dataSource type="POOLED">
               <property name="driverClass" value="${driverClass}" />
               <property name="url" value="${url}" />
               <property name="user" value="${user}" />
               <property name="password" value="${password}" />
           </dataSource>
       </environment>
   </environments>
   <!--mybatis.cfg.xml里注册UserMapper.xml文件-->
   <mappers>
       <!--&lt;!&ndash; 告知映射文件方式1,一个一个的配置-->
       <mapper resource="com/mybatisCRUD/mapper/UserMapper.xml"/>
       <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
       <!--<package name="com/cy/mybatis/mapper"/>-->
   </mappers>
</configuration>


明天计划的事情:修改bug,学习log4j,基础学习


遇到的问题: 

没测试出来,提示空指针异常at com.mybatisCRUD.tools.DBTools.getSession,估计是工具类的代码有点问题。

对代码的理解不足,所以就去看了看mybatis的基础视频,对代码的理解加深了不少。


收获:

1.为什么要用mybatis

2.mybatis的使用流程

3.mybatis.xml中名词的解释



返回列表 返回列表
评论

    分享到