1、配置:和hibernate、mybatis的配置基本一样,不同的仅为bean的配置。JDBCTemplate在spring中的配置为:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClassName}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean>
2、使用:
@Resource private JdbcTemplate jdbcTemplate;
即可使用。
3、实例:
pojo:
package com.domain; public class User { private String id; private String ucode; private String name; private String sex; private String pwd; private String sid; private String school; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUcode() { return ucode; } public void setUcode(String ucode) { this.ucode = ucode; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } }
RowMapperUser:
package com.domain; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; public class RowMapperUser implements RowMapper<User> { @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { User dbuser = new User(); dbuser.setId(rs.getString("id")); dbuser.setName(rs.getString("name")); dbuser.setPwd(rs.getString("pwd")); dbuser.setSchool(rs.getString("school")); dbuser.setSex(rs.getString("sex")); dbuser.setSid(rs.getString("sid")); dbuser.setUcode(rs.getString("ucode")); return dbuser; } }
RowMapperRole:
public class RowMapperRole implements RowMapper<Role> { /* (non-Javadoc) * @see org.springframework.jdbc.core.RowMapper#mapRow(java.sql.ResultSet, int) */ @Override public Role mapRow(ResultSet rs, int arg1) throws SQLException { Role role = new Role(); role.setName(rs.getString("name")); role.setRid(rs.getString("rid")); return role; } }
dao:
(1、)增、删、改:使用update方法,这里只举一个例子:
//增 public int addUser(User user) { String sql = "insert into user(id,ucode,name,sex,pwd,sid,school)" + " VALUES (?,?,?,?,?,?,?)"; int a = jdbcTemplate.update(sql, new Object[]{user.getId(), user.getUcode(), user.getName(), user.getSex(), user.getPwd(), user.getSid(), user.getSchool()}); return a; }
(2、)查询单个字段:
public Integer getCount(Map<String, Object> map) { Integer count = null; Object[] obj=null; String role = (String) map.get("role"); String school = (String) map.get("school"); String sex = (String) map.get("sex"); String sql = "select count(*) from " + "(select u.id from user u left join userrole ur " + " on u.id=ur.uid left join role r on r.rid=ur.rid " + " where 1=1 "; // 无条件查询 if (role == null && school == null && sex == null) { System.out.println("无条件查询"); sql += "group by u.id) as a"; obj=new Object[]{}; } // 全条件查询 if (role != null && school != null && sex != null) { sql += " and r.name=? and school=? and sex=? group by u.id) as a"; System.out.println("全条件查询前"); obj=new Object[]{role, school, sex}; System.out.println("全条件查询后"); } // 只查学校 if (role == null && school != null && sex == null) { sql += " and school=? group by u.id) as a"; obj=new Object[]{school}; } // 只查性别 if (role == null && school == null && sex != null) { sql += " and sex=? group by u.id) as a"; obj=new Object[]{sex}; } // 只查权限 if (role != null && school == null && sex == null) { sql += " and r.name=? group by u.id) as a"; obj=new Object[]{role}; } // 查权限和学校 if (role != null && school != null && sex == null) { sql += " and r.name=? and school=? group by u.id) as a"; obj=new Object[]{role, school}; } // 查学校和性别 if (role == null && school != null && sex != null) { sql += " and school=? and sex=? group by u.id) as a"; obj=new Object[]{school, sex}; } // 查权限和性别 if (role != null && school == null && sex != null) { sql += " and r.name=? and sex=? group by u.id) as a"; obj=new Object[]{role, sex}; } count=jdbcTemplate.queryForObject(sql, obj,Integer.class); return count; }
public String getRidByName(String name) { String sql = "select rid from role where name=?"; String rid=jdbcTemplate.queryForObject(sql, new Object[]{name},String.class); return rid; }
(3、)查询单个对象:
/** * @Title: getUser * @Description: <!--获取登录用户byId--> * @param user * 用户 * @return 返回用户信息 */ public User getUser(User user) { String sql = "select * from user where id=?"; User dbuser =jdbcTemplate.queryForObject(sql, new Object[]{user.getId()},new RowMapperUser()); return dbuser; }
(4、)查询对象集合:
/** * @Title: getUserRoles * @Description: 获取用户的所有权限 * @param user * 用户 * @return 返回权限列表 */ public List<Role> getUserRoles(User user) { // new ArrayList<>(); String sql = "select * from role r left join " + "userrole ur on r.rid=ur.rid left join user u " + " on ur.uid=u.id where u.id=?"; List<Role> list = jdbcTemplate.query(sql, new Object[] { user.getId() }, new RowMapperRole()); return list; }