发表于: 2017-09-23 01:01:49
2 764
今天完成的事情:用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);
}
}
评论