发表于: 2019-11-19 20:45:42

1 902


今天做了什么

1.完成用mybaits数据库简单的增删改查

2.学会使用junit写测试用例

3.尝试使用log4j

文件目录

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.xml</include>
               </includes>
           </resource>
       </resources>
   </build>
   <groupId>MyBaitsDemo</groupId>
   <artifactId>MyBaitsDemo</artifactId>
   <version>1.0-SNAPSHOT</version>
   <dependencies>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.3</version>
       </dependency>
       <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.4.0</version>
   </dependency>
       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
           <version>1.7.5</version>
       </dependency>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
       </dependency>
   </dependencies>
</project>

package com.demo.dao;
import com.demo.pojo.User;
import org.apache.ibatis.session.SqlSession;
import java.util.List;

public class UserDaoImpl implements  UserDao {
public SqlSession sqlSession;
   public UserDaoImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
   }

public User queryUserById(String id) {
return this.sqlSession.selectOne("UserDao.queryUserById", id);
   }

public List<User> queryUserAll() {
return this.sqlSession.selectList("UserDao.queryUserAll");
   }

public void insertUser(User user) { this.sqlSession.insert("UserDao.insertUser", user); }
public void updateUser(User user) { this.sqlSession.update("UserDao.updateUser", user); }

public void deleteUser(String id) { this.sqlSession.delete("UserDao.deleteUser", id); }
}

简单连接查询数据库

<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper:根标签,namespace:命名空间,随便写,一般保证命名空间唯一 -->
   <mapper namespace="MyMapper">
   <!-- statement,内容:sql语句。id:唯一标识,随便写,在同一个命名空间下保持唯一
      resultTypesql语句查询结果集的封装类型,tb_user即为数据库中的表
    -->

   <select id="selectUser" resultType="com.demo.pojo.User">
     select * from user where id = #{id}
</select>
</mapper>

curd

uesrdaomapper.xml

<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper:根标签,namespace:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="UserDao">
   <!-- statement,内容:sql语句。id:唯一标识,随便写,在同一个命名空间下保持唯一
      resultTypesql语句查询结果集的封装类型,tb_user即为数据库中的表
    -->
   <!--<select id="queryUserById" resultType="com.demo.pojo.User">-->
   <!--select * from tb_user where id = #{id}-->
   <!--</select>-->
   <!--使用别名-->
   <select id="queryUserById" resultType="com.demo.pojo.User">
     select
user.id as id,
user.username as userName,
user.password as password,
user.name as name,
user.age as age,
user.birthday as birthday,
user.sex as sex,
user.created as created,
user.updated as updated
from
user
where user.id = #{id};
</select>

   <select id="queryUserAll" resultType="com.demo.pojo.User">
       select * from user;
</select>

   <!--插入数据-->
   <insert id="insertUser" parameterType="com.demo.pojo.User">
       INSERT INTO user (
username,
password,
name,
age,
sex,
birthday,
created,
updated
)
VALUES
(
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
now(),
now()
);
</insert>

   <update id="updateUser" parameterType="com.demo.pojo.User">
       UPDATE user
<trim prefix="set" suffixOverrides=",">
           <if test="userName!=null">username = #{userName},</if>
           <if test="password!=null">password = #{password},</if>
           <if test="name!=null">name = #{name},</if>
           <if test="age!=null">age = #{age},</if>
           <if test="sex!=null">sex = #{sex},</if>
           <if test="birthday!=null">birthday = #{birthday},</if>
           updated = now(),
</trim>
       WHERE
(id = #{id});
</update>

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

mybaits-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>
   <!-- 环境,可以配置多个,default:指定采用哪个环境 -->
   <environments default="test">
       <!-- id:唯一标识 -->
       <environment id="test">
           <!-- 事务管理器,JDBC类型的事务管理器 -->
           <transactionManager type="JDBC" />
           <!-- 数据源,池类型的数据源 -->
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver" />
               <property name="url" value="jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true" />
               <property name="username" value="root" />
               <property name="password" value="admin" />
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="mapper/MyMapper.xml"/>
       <mapper resource="mapper/UserDaoMapper.xml"/>
   </mappers>
</configuration>

测试用例userdaotest(快捷键ctrl +shift + T)

import com.demo.pojo.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.Before;
import org.junit.Test;
import java.io.InputStream;
import java.sql.Date;
import java.util.List;


public class UserDaoTest {
public UserDao userDao;
   public SqlSession sqlSession;
   @Before
   public void setUp() throws Exception {
// mybatis-config.xml
       String resource = "mybatis-config.xml";
       // 读取配置文件
       InputStream is = Resources.getResourceAsStream(resource);
       // 构建SqlSessionFactory
       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
       // 获取sqlSession
       sqlSession = sqlSessionFactory.openSession();
       this.userDao = new UserDaoImpl(sqlSession);
   }

@Test
   public void queryUserById() throws Exception {
System.out.println(this.userDao.queryUserById("1"));
   }

@Test
   public void queryUserAll() throws Exception {
List<User> userList = this.userDao.queryUserAll();
       for (User user : userList) {
System.out.println(user);
       }
}
@Test
   public void insertUser() throws Exception {
User user = new User();
       user.setAge(16);
       user.setBirthday(new Date(2002-02-02));
       user.setName("大鹏");
       user.setPassword("123456");
       user.setSex("");
       user.setUserName("evan");
       this.userDao.insertUser(user);
       this.sqlSession.commit();
   }
@Test
   public void updateUser() throws Exception{
User user = new User();
           user.setBirthday(new Date(2002-02-02));
           user.setName("静鹏");
           user.setPassword("654321");
           user.setSex("");
           user.setUserName("evanjin");
           user.setId("1");
           this.userDao.updateUser(user);
           this.sqlSession.commit();

   }

@Test
   public void deleteUser() throws Exception{
this.userDao.deleteUser("4");
           this.sqlSession.commit();
       }
}

log4j配置文件

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

总结:

1.个人感觉找学习教程时一定要找好的教程,最好要足够详细,一般的博客不详细,太杂,可能还有错误,没有基础的话容易被奇奇怪怪的问题所拦住,

推荐: w3cschool的spring教程 和 鸟哥专栏:https://blog.csdn.net/hellozpc 的mybaits部分(仍然有一点细节和你自己跑的代码会有差异,不然跑不通)

2.今天遇到的问题没有特别难的,主要是自己不够细心,老是在一些细节上不注意

比如mapper文件的映射包名com.xxx.xxx是否正确,mybaits的配置文件中mapper的路径是否正确,

怎样通过百度找到有用的报错信息,如何细心查看爆红并改正,仔细检查mapper文件是否正确

明天要做的事情:

1.继续学习spring和mybaits,有时间的话想做一下笔记,记载学习到的东西(经常容易忘),总结遇到的问题

2.开始写mybaits和spring的整合的Curd



返回列表 返回列表
评论

    分享到