编写程序困惑的地方,及相应的解决方案【数据库的设计,时间格式的转换】

问题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语句的编写,及功能的实现;

本人目前处于学习阶段,各位大神多多提宝贵的建议!
原文地址:https://www.cnblogs.com/FanSunny/p/4831707.html