发表于: 2020-04-27 15:27:37

1 1385


MyBatis将sql写在UserMapper里。

mybatis-config.xml

configuration根标签

mapper namespace可以随便起,但如果使用动态代理就要一样,可以直接跳到UserDao class。

<mapper namespace="dao.UserDao" >

把数据库中的列定义成java代码中的属性,并实现驼峰转换:

<result column="name" property="name" jdbcType="VARCHAR" />

junit中基本注解:

  • @BeforeClass – 表示在类中的任意public static void方法执行之前执行
  • @AfterClass – 表示在类中的任意public static void方法执行之后执行
  • @Before – 表示在任意使用@Test注解标注的public void方法执行之前执行
  • @After – 表示在任意使用@Test注解标注的public void方法执行之后执行
  • @Test – 使用该注解标注的public void方法会表示为一个测试方法

参考:https://www.cnblogs.com/hezhiyao/p/9440277.html

UserDaoTest.java (juint)

1.不使用动态代理,直接使用有参构造

userDao = new UserDaoImpl(sqlSession);

传到UserDao class里

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

2.使用动态代理---把userDao实例化出来,之后就可以使用比如userDao的add方法

userDao = sqlSession.getMapper(UserDao.class);

到mybatis-config.xml

<mapper resource="UserMapper.xml"/>

1.不使用动态代理,直接使用有参构造

单独运行/直接全部运行UserDaoTest.java的addUser

发现没有输出且显示no test cases found:于是pom.xml,重装juint4.12;

commit addUser后记录中出现了新增记录-“小”

addUser中的函数参数:

useGeneratedKey:是否返回主键

keyProperty:返回key的属性

parameterType:入参类型,在mybatis-config.xml中改pojo.User别名为User后就可以只写User,可跳转

<insert id="addUser" parameterType="pojo.User"  useGeneratedKeys="true" keyProperty="id">
1.#{}预编译的方式preparedStatement,使用占位符替换,防止sql注入

2.${}普通的statement,字符串直接拼接,不可以防止sql注入

 #{name,jdbcType=VARCHAR}

报错:元素类型为 "mapper" 的内容必须匹配 "(cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update*|delete*|selec

---忘记comment注释导致

deleteUser运行:

updateUser:在userDaoImpl漏写id就报nullpointer错

public User selectObject(Long id){
return sqlSession.selectOne("dao.UserDao.selectObject", id);
}

余下3个juint testcases都通过了:

2.使用动态代理

把整个UserDaoImpl comment掉,在UserDaoTest。java中:

//使用动态代理
userDao = sqlSession.getMapper(UserDao.class);

Testcases也可以正常运行:

下一篇日报:

sqlsession,juint背景, spring, IOC


返回列表 返回列表
评论

    分享到