问题1、在编写代码时,要注意前后的逻辑关系,当声明一个变量来接收获取到的值(对象、集合)时,要使用if条件判断一下,是否获取到的值为空,这样子会使编写的代码更加的严谨,比如:根据id查询用户,那么查得的用户有可能不存在,此时就应该给予一定的处理过程(抛异常或者给予一个提示{“该用户不存在”}什么的);
问题2、对于遇到的时间问题,数据库中存储的是date类型,代码实体类中的字段类型也是date类型,进行插入操作时,如何进行,是否需要对其格式进行一定的转换,特别在加上前台的输入获取时,是否需要对其格式进行一定的转换?
解答:项目测试中,当数据库表中某个字段类型是date,然后编写代码实体类中相应属性的类型也是date时,再进行插入插入操作,不需要再进行时间格式的转换;
测试代码如下:
1 //1、实体类【属性值及相应的set、get方法】 2 private Date birth; 3 public String getBirth(){} 4 public void setBirth(){} 5 //2、dao接口【注意:其中的方法名要与sqlMap配置文件中sql语句id值相同,】 6 //插入用户信息(ok) 7 public void insert(User user); 8 //删除用户信息【根据id】(ok) 9 public void deleteByPrimaryKey(String id); 10 //3、service接口【定义要实现的接口,其中方法名没有什么要求】 11 public void insertUser(User user); 12 public void deleteUserById(String id); 13 //4、serviceImpl实现类【实现具体的功能,且与数据库进行了连接,实现功能】 14 @Service("userService") 15 public class UserServiceImpl implements UserService { 16 17 private UserDao userDao; 18 19 public UserDao getUserDao() { 20 return userDao; 21 } 22 @Autowired 23 public void setUserDao(UserDao userDao) { 24 this.userDao = userDao; 25 } 26 //根据id删除用户信息 27 public void deleteById(String id) { 28 System.out.println("删除用户id"+id); 29 System.out.println("用户信息的名字:"+userDao.selectByPrimaryKey(id).getName()); 30 userDao.deleteByPrimaryKey(id); 31 System.out.println("已删除成功!!"); 32 } 33 //插入用户信息【注意没有对其中的时间进行什么转换】 34 public void insertUser(User user) { 35 System.out.println("插入用户的相关的信息:"+user.getId()+user.getName()+user.getBirth()+user.getRoles()); 36 System.out.println("插入之前:"); 37 userDao.insert(user); 38 System.out.println("插入之后:测试成功"); 39 } 40 } 41 //5、sqlMap配置文件编写具体的sql语句 42 <!-- 插入用户信息 --> 43 <insert id="insert" parameterType="fdx.model.User"> 44 insert into fdx.dbo.[User] (ID,NAME,PWD,BIRTH,ROLES) 45 values (#{id,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR},#{pwd,jdbcType=VARCHAR},#{birth,jdbcType=DATE},#{roles,jdbcType=VARCHAR}) 46 </insert> 47 //6、编写的测试类【使用的是junit测试方法】 48 public class TestMy { 49 @Test 50 public void test(){ 51 ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { "spring.xml", "spring-mybatis.xml"}); 52 UserService us = (UserService) ac.getBean("userService"); 53 //插入【首先是随便的一个字符串<---->转换成:时间格式】 54 //当然也可以直接获取当前系统时间进行插入操作 55 String str = "1990-09-02"; 56 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); 57 try { 58 59 Date d = sf.parse(str); 60 System.out.println("输出一:"+d); 61 System.out.println("输出二:"+sf.format(d)); 62 //之后就是进入到serviceimpl,service,dao等类进行与后台的操作 63 User user = new User("127","fdx","12345",d,"管理员"); 64 us.insertUser(user); 65 66 } catch (Exception e) { 67 // TODO Auto-generated catch block 68 System.out.println("出现异常啦"); 69 e.printStackTrace(); 70 } 71 72 测试结果是: 73 Sun Sep 02 00:00:00 GMT+08:00 1990 74 1990-09-02 75 插入用户的相关的信息:127fdxSun Sep 02 00:00:00 GMT+08:00 1990管理员 76 插入之前: 77 插入之后:测试成功
问题3、还有就是在数据库中主键的设置,当进行插入操作时,id值是自增的
【待解,测试中】
问题4、批量删除操作sql语句的编写,及功能的实现;
问题5、模糊插入操作sql语句的编写,及功能的实现;