发表于: 2018-01-02 23:25:19

1 481


  • 17.编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。

学习了一下命名规范:

http://blog.csdn.net/tristansmile/article/details/7989670


1.学习spring的配置和使用

2.初步完成jdbcTemplate连接数据库的使用。

参考资料:

https://www.cnblogs.com/tuhooo/p/6491913.html

http://blog.csdn.net/u013468917/article/details/52217954


applicationContext.xml 

<!-- 使用注解的配置 -->
   <context:component-scan base-package="com.how2java.springtest.DAO"/>

   <!-- mysql数据库配置 -->
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
       <property name="driverClass">
           <value>com.mysql.jdbc.Driver</value>
       </property>
       <property name="jdbcUrl">
           <value>jdbc:mysql://localhost:3306/test</value>
       </property>
       <property name="user">
           <value>root</value>
       </property>
       <property name="password">
           <value>root</value>
       </property>
   </bean>

   <!-- jdbctemplate and dataSource -->
   <bean id="jdbcTemplate"
         class="org.springframework.jdbc.core.JdbcTemplate">
       <property name="dataSource" ref="dataSource"></property>
   </bean>
   
</beans>

userDao

@Component("u")
public class UserDao {

public JdbcTemplate jdbcTemplate = null;

   //根据id查询
   public User get(int id){
String sql = "SELECT id, name, password FROM user WHERE id = ?";
       RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
       User user = jdbcTemplate.queryForObject(sql, rowMapper, id);
       return user;
   }
//全表输出
   public List<User> getAll() {
String sql = "SELECT id, name, password FROM user WHERE id > ?";
       RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
       List<User> user= jdbcTemplate.query(sql, rowMapper,0);
       return user;
   }


//批量插入
   public void add() {
String sql = "INSERT INTO user(name, password) VALUES(?,?)";
       List<Object[]> batchArgs = new ArrayList<Object[]>();
       batchArgs.add(new Object[]{"AA", "123456"});
       batchArgs.add(new Object[]{"BB", "123456"});
       jdbcTemplate.batchUpdate(sql, batchArgs);

   }

//使用user实例插入
   public void addUser(User user) {
String sql = "INSERT INTO user(name, password) VALUES(?,?)";
       jdbcTemplate.update(sql, user.getName(),user.getPassword());

       }

//更新
   public void userUpdate() {
String sql = "UPDATE user SET password = ? WHERE id = ?";
           jdbcTemplate.update(sql, "654321", 2);
       }

}

测试:

ApplicationContext ctx= new ClassPathXmlApplicationContext("ApplicationContext.xml");
UserDao userdao = (UserDao) ctx.getBean("u");
userdao.jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
userdao.add();
userdao.userUpdate();
System.out.println(userdao.get(1));

User user = (User) ctx.getBean("user");
user.setName("张三");
user.setPassword("123456");
userdao.addUser(user);
System.out.println(userdao.getAll());

输出:

User[id=1,name=AA,password=123456]

[User[id=1,name=AA,password=123456], User[id=2,name=BB,password=654321], User[id=3,name=张三,password=123456]]


今天的收获:

1.学习了spring框架的基本配置方法,对于IOC(反转控制)和DI(依赖注入)有了初步理解。对于注解方式@Componen基本会用了。


2.学习了jdbcTemplate的配置和基本使用方法。  


遇到的问题:

1.Interface和Imple没有搞清楚,搞不清自己写的这个UserDao和User实体类到底哪个是哪个。

2.注解@Autowired的使用方法还很模糊,明天还要继续学。

3.spring中的AOP(面向切片)的配置没怎么看懂。


明天的计划:

1.把今天遇到的一些问题搞清楚。

2.注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,把这个问题试着理解一下。

3.学习一下容器类的使用。









返回列表 返回列表
评论

    分享到