Data Access 简介 概述 DataAccess模块主要包括
JDBCTemplate对JDBC进行封装,很方便的实现对数据库进行操作。
自己开发项目也应该这样做。 首先进行设计,把接口、实现、属性、方法定义好。遵循从上到下的设计。 然后进行开发,根据具体的业务逻辑实现方法的内容。遵循从下到上的开发。
准备工作
引入相关的jar包
数据库连接池
1 2 3 4 5 6 7 <bean id ="dataSource" class ="com.alibaba.druid.pool.DruidDataSource" > <property name ="driverClassName" value ="com.mysql.jdbc.Driver" > </property > <property name ="url" value ="jdbc:mysql://localhost:3310/user" > </property > <property name ="username" value ="root" > </property > <property name ="password" value ="123456" > </property > </bean >
配置jdbcTemplate对象,注入dataSource
1 2 3 4 5 <!--创建jdbctemplate对象--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入参数--> <property name="dataSource" ref="dataSource"></property> </bean>
创建Service和dao。在service注入dao,在dao中注入jdbcTemplate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public int addUser (User user) { System.out.println("add 方法执行了" ); return 1 ; } } public class UserService { @Autowired private UserDao userDao; public void addUser (User user) { userDao.addUser(user); } }
编写业务逻辑
在dao中进行数据库添加操作。在jdbcTemplate对象里面update方法实现添加操作
1 2 3 4 5 6 7 8 9 10 @Override public int addUser (User user) { String sql = "insert into user values(?,?,?)" ; Object[] args = {user.getUserId(),user.getUsername(),user.getUserStatus()}; int update = jdbcTemplate.update(sql,args); System.out.println(update); return update; }
在service中完成业务逻辑
1 2 3 4 5 6 7 8 9 @Service public class UserService { @Autowired private UserDao userDao; public void addUser (User user) { userDao.addUser(user); } }
在test中进行测试和验证
1 2 3 4 5 6 7 8 9 10 @Test public void testJDBC () { ApplicationContext context = new ClassPathXmlApplicationContext ("bean01.xml" ); UserService userService = context.getBean("userService" ,UserService.class); User user = new User (); user.setUserId("123" ); user.setUsername("yinkanglong" ); user.setUserStatus("up" ); userService.addUser(user); }
2 增删查改业务的实现 基本业务实现
增 jdbcTemplate.update()
删 jdbcTemplate.update()
改 jdbcTemplate.update()
查
数量返回值 jdbcTemplate.queryForObject
单挑记录 jdbcTemplate.queryForObject
多条记录 jdbcTemplate.query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public int addUser (User user) { String sql = "insert into user values(?,?,?)" ; Object[] args = {user.getUserId(),user.getUsername(),user.getUserStatus()}; int update = jdbcTemplate.update(sql,args); System.out.println(update); return update; } @Override public void updateUser (User user) { String sql = "update user set username=?,userstatus=? where userid=?" ; Object[] args = {user.getUsername(),user.getUserStatus(),user.getUserId()}; int update = jdbcTemplate.update(sql,args); System.out.println(update); return ; } @Override public void delete (String id) { String sql = "delete from user where userid=?" ; Object[] args = {id,}; int update = jdbcTemplate.update(sql,args); System.out.println(update); return ; } @Override public int selectCount () { String sql = "select count(*) from user" ; Integer count = jdbcTemplate.queryForObject(sql,Integer.class); return count; } @Override public User findUserInfo (String id) { String sql = "select * from user where userid=?" ; User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper <User>(User.class),id); return user; } @Override public List<User> findAll () { String sql = "select * from user" ; List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper <User>(User.class)); return users; } }
批量操作
1 2 3 4 5 6 @Override public void batchAdd (List<Object[]> batchArgs) { String sql = "insert into user values(?,?,?)" ; int [] ints = jdbcTemplate.batchUpdate(sql,batchArgs); System.out.println(Arrays.toString(ints)); }