RowMapper问题

冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述RowMapper问题相关的知识,希望能为你提供帮助。
sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类.
我们在数据库查询中,如果返回的类型是用户自定义的类型是需要包装,如果是java自定义的类型,如:String则不需要.。之后的hibernate和spring整合了就不会用这个Rowmapper,毕竟太不方便了,只有spring单独使用的时候我们才会用到这个
如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.
可以通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.
总结:Spring单独进行数据库操作过于复杂,每次都要进行数据库连接,而且下面没有事物操作,出现异常出现中断,但是数据进行了操作。因此没有hibernate的封装类操作方便,安全,所以这里仅仅是一个练习,了解一下即可。没有必要做深入研究,主要的是spring文件的bean.xml文件注入要进行大量练习和研究,后面的复杂情况才能得心应手。
具体代码如下

@Test public void testQuery() { /*加载连接池*/ ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDescription("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql:///admin"); dataSource.setUser("root"); dataSource.setPassword("1234"); JdbcTemplate jdbc=new JdbcTemplate(dataSource); String sql="select *from jdbc where username=?"; User user=jdbc.queryForObject(sql,new MyRowMapper(),"yang"); System.out.println("user:"+user); } class MyRowMapper implements RowMapper< User> {public User mapRow(ResultSet rs, int num) throws SQLException { String username=rs.getString("username"); String password=rs.getString("password"); User user=new User(); user.setUsername(username); user.setPassword(password); return user; } }

  如果是一个list集合,就需要用到query方法,这个返回的是一个集合
@Test public void testQuery2() { /*加载连接池*/ ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDescription("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql:///admin"); dataSource.setUser("root"); dataSource.setPassword("1234"); JdbcTemplate jdbc=new JdbcTemplate(dataSource); String sql="select *from jdbc"; List< User> list=jdbc.query(sql,new MyRowMapper()); System.out.println("user:"+list); }

 
关于c3po连接问题:MVC框架进行数据库插入操作(入门操作)
UserDao代码:
import org.springframework.jdbc.core.JdbcTemplate; public class UserDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void add() { String sql="insert into jdbc values(?,?)"; jdbcTemplate.update(sql,"jsdk","4568"); } }

UserService代码
public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public UserDao getUserDao() { return userDao; } public void add() { userDao.add(); } }

c3p0.xml代码:
< !-- 配置c3p0连接池 --> < bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> < !-- 注入里面的属性值 --> < property name="driverClass" value="https://www.songbingjia.com/android/com.mysql.jdbc.Driver"> < /property> < property name="jdbcUrl" value="https://www.songbingjia.com/android/jdbc:mysql:///hibernate"> < /property> < property name="user" value="https://www.songbingjia.com/android/root"> < /property> < property name="password" value="https://www.songbingjia.com/android/1234"> < /property> < /bean> < !-- 创建service和dao对象 --> < bean id="userService" class="cn.ismy.c3p0.UserService"> < property name="userDao" ref="userDao"> < /property> < /bean> < bean id="userDao" class="cn.ismy.c3p0.UserDao"> < !-- 在dao里面注入jdbcTemplate模板对象 --> < property name="jdbcTemplate" ref="jdbcTemplate"> < /property> < /bean> < !-- 创建jdbcTemplate模板对象 用jdbcTemplate类进行crud(增删改查)操作--> < bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> < !-- 把DataSource传到jdbcTemplate里面去 --> < property name="dataSource" ref="dataSource"> < /property> < /bean>

测试类
public void queryC3p0() { ApplicationContext context=new ClassPathXmlApplicationContext("c3p0.xml"); UserService uservice=(UserService) context.getBean("userService"); uservice.add(); }

【RowMapper问题】 


    推荐阅读