发表于: 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.学习一下容器类的使用。
评论