发表于: 2017-09-23 01:01:49

2 762


今天完成的事情:用Mybatis编写了DAO层 ,并且用JUnit进行测试


明天计划的事情:学习Spring


遇到的问题:log4j不能用:是不是log4j.properties路径不正确?还是配置有问题?还是其他原因?


首先在这个目录下建立了log4j.properties

(试过把放在src/ 或 src/ main/ 或 src/ main/java/ 或 src/ main/java/mapperDao/ 下,都不行

加载jar包

配置log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

(从网上copy了很多种配制方法都不能用)

最后提示


收获

加载mabatis.jar,junit.jar和其他环境包

创建SqlMapConfig.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"/>
               <property name="username" value="root"/>
               <property name="password" value="640913"/>
           </dataSource>
       </environment>
   </environments>
   <!-- 加载映射文件 -->
   <mappers>
       <mapper resource="config/mapperDao/mapperStudent.xml"/>
   </mappers>
</configuration>

编写映射文件

<?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="mapperDao.StuMapperDao">
   <select id="findStuById" parameterType="int" resultType="domain.Student">
   <!-- parameterType输入参数类型  resultType输出类型java类对象 -->
       select * from student where id = #{id}
   </select>

   <select id="findStuByName" parameterType="java.lang.String" resultType="domain.Student">
   <!-- 根据名字模糊查找list 该方法会引入sql注入问题 -->
       SELECT * FROM student WHERE name LIKE '%${value}%'
   </select>

   <insert id="addStu" parameterType="domain.Student">
       <!-- SELECT LAST_INSERT_ID()得到刚插入用户的自增id;将id值赋予 keyProperty=类对象的属性名称 -->
       <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
           SELECT LAST_INSERT_ID()
       </selectKey>
       INSERT into student(name,qq,type,university,wish) VALUES(#{name},#{qq},#{type},#{university},#{wish})
   </insert>

   <delete id="deleteStuById" parameterType="java.lang.Integer">
       DELETE FROM student WHERE id=#{value}
   </delete>

   <update id="updateStu" parameterType="domain.Student">
       UPDATE student SET name=#{name},qq=#{qq},type=#{type},university=#{university},wish=#{wish} WHERE ID=#{id}
   </update>
</mapper>

编写接口:

原则:

映射文件mapper.xml中namespace等于接口的地址;

接口的方法名等于mapper.xml中statement id 名;

接口中方法的返回类型对应mapper.xml中方法的resultType,参数类型对应mapper.xml中方法的parameterType。

package mapperDao;

import domain.Student;

import java.util.List;

public interface StuMapperDao {
public Student findStuById(int id) throws Exception;
   public List<Student> findStuByName(String name) throws Exception;
   public void addStu(Student student) throws Exception;
   public void deleteStuById(int id) throws Exception;
   public void updateStu(Student student) throws Exception;
}

用junit测试mapper接口

public class MapperTest {
private SqlSessionFactory sqlSessionFactory;
   @Before
   public void setUp() throws Exception {
       String resource = "config/SqlMapConfig.xml";

       //得到配置文件流
       InputStream inputStream = Resources.getResourceAsStream(resource);

       //创建会话工厂
       sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
   }

   @Test
   public void addTest() throws Exception {
       SqlSession sqlSession = sqlSessionFactory.openSession();
       StuMapperDao stuMapperDao = sqlSession.getMapper(StuMapperDao.class);
       Student student = new Student();
       student.setUniversity("mapper");
       student.setName("mapper name+");
       student.setQq(956324758);
       student.setType("mapper");
       student.setWish("get money+");

       stuMapperDao.addStu(student);
   }
   @Test
   public void delTest() throws Exception {
       SqlSession sqlSession = sqlSessionFactory.openSession();
       StuMapperDao stuMapperDao = sqlSession.getMapper(StuMapperDao.class);
       stuMapperDao.deleteStuById(11);
   }
   @Test
   public void updateTest() throws Exception {
       SqlSession sqlSession = sqlSessionFactory.openSession();
       StuMapperDao stuMapperDao = sqlSession.getMapper(StuMapperDao.class);
       Student student = new Student();
       student.setId(9);
       student.setUniversity("nmapper");
       student.setName("nmapper name");
       student.setQq(95632475);
       student.setType("nmapper");
       student.setWish("get money");
       stuMapperDao.updateStu(student);
   }
   @Test
   public void findTest() throws Exception {
       SqlSession sqlSession = sqlSessionFactory.openSession();
       StuMapperDao stuMapperDao = sqlSession.getMapper(StuMapperDao.class);
       Student student = stuMapperDao.findStuById(7);
   }
   @Test
   public void findListTest() throws Exception {
       SqlSession sqlSession = sqlSessionFactory.openSession();
       StuMapperDao stuMapperDao = sqlSession.getMapper(StuMapperDao.class);
       List<Student> list = stuMapperDao.findStuByName("mj");
       System.out.print(list);
   }

}



返回列表 返回列表
评论

    分享到