Recently, the simplejdbctemplate class of spring2.5 is used to implement the DaO layer of a project. From the perspective of development practice, it is easy to get started. Even beginners can quickly master the development under certain guidance, and the development efficiency is very high.
In the process of use, we found that spring2.5 and 2.0 had some changes, so the code was also posted, which is a reference. These codes and unit test codes are simple but work-ready codes.
Dao userinfodao. Java:
Package COM. example. jfxf. dao; <br/> Import Java. SQL. resultset; <br/> Import Java. SQL. sqlexception; <br/> Import Java. util. list; <br/> Import javax. SQL. datasource; <br/> Import Org. springframework. dao. dataaccessexception; <br/> Import Org. springframework. JDBC. core. namedparam. mapsqlparametersource; <br/> Import Org. springframework. JDBC. core. simple. parameterizedrowmapper; <br/> Import Org. springframework. JDBC. Core. simple. simplejdbcinsert; <br/> Import Org. springframework. JDBC. core. simple. simplejdbctemplate; <br/> Import Org. springframework. transaction. annotation. transactional; <br/> Import COM. example. jfxf. model. jfxfuserinfo; <br/> public class userinfodao {<br/> private simplejdbctemplate; <br/> private simplejdbcinsert insertuserinfo; <br/> Public void setdatasource (datasource consumer C E) {<br/> This. simplejdbctemplate = new simplejdbctemplate (datasource); <br/> This. insertuserinfo = new simplejdbcinsert (datasource ). withtablename (<br/> "jfxf_user_info "). usinggeneratedkeycolumns ("userinfo_id"); <br/>}< br/> @ transactional (readonly = true) <br/> public list <jfxfuserinfo> getalluserinfos () {<br/> return this. simplejdbctemplate <br/>. query (<br/> "select userinfo_id, user_msisdn, Brand_type, balance from jfxf_user_info ", <br/> New userinfomapper (); <br/>}< br/> @ transactional (readonly = true) <br/> Public jfxfuserinfo getuserinfobyid (INT userid) {<br/> return this. simplejdbctemplate <br/>. queryforobject (<br/> "select userinfo_id, user_msisdn, brand_type, balance from jfxf_user_info where userinfo_id =? ", <Br/> New userinfomapper (), userid); <br/>}< br/> @ transactional (readonly = true) <br/> Public jfxfuserinfo getuserinfobyphonenumber (string phonenumber) {<br/> return this. simplejdbctemplate <br/>. queryforobject (<br/> "select userinfo_id, user_msisdn, brand_type, balance from jfxf_user_info where user_msisdn =? ", <Br/> New userinfomapper (), phonenumber ); <br/>}< br/> private class userinfomapper implements <br/> parameterizedrowmapper <jfxfuserinfo >{< br/> Public jfxfuserinfo maprow (resultset RS, int rownum) <br/> throws sqlexception {<br/> jfxfuserinfo user = new jfxfuserinfo (); <br/> User. setuserinfoid (RS. getint ("userinfo_id"); <br/> User. setphonenumber (RS. getstring ("user_msisdn"); <br/> User. setbran Dtype (RS. getint ("brand_type"); <br/> User. setbalance (RS. getint ("balance"); <br/> return user; <br/>}< br/> @ transactional <br/> Public void saveuserinfo (jfxfuserinfo user) throws dataaccessexception {<br/> If (user. isnew () {<br/> Number newkey = This. insertuserinfo <br/>. executeandreturnkey (createuserinfoparametersource (User); <br/> User. setuserinfoid (newkey. intvalue (); <br/>} else {<Br/> This. simplejdbctemplate <br/>. update (<br/> "Update jfxf_user_info set user_msisdn =: user_msisdn, brand_type =: brand_type, balance =: Balance" <br/> + "where userinfo_id =: userinfo_id ", <br/> createuserinfoparametersource (User); <br/>}< br/> private mapsqlparametersource createuserinfoparametersource (<br/> jfxfuserinfo user) {<br/> return New mapsqlparametersource (). addvalue ("useri Nfo_id ", <br/> User. getuserinfoid ()). addvalue ("user_msisdn", <br/> User. getphonenumber ()). addvalue ("brand_type", <br/> User. getbrandtype ()). addvalue ("balance", user. getbalance (); <br/>}< br/> @ transactional <br/> Public void deleteuserinfo (jfxfuserinfo user) throws dataaccessexception {<br/> This. simplejdbctemplate. update (<br/> "delete from jfxf_user_info where userinfo_id =? ", User <br/>. getuserinfoid (); <br/>}< br/>}
Corresponding Model object:
Package COM. example. jfxf. model; <br/> public class jfxfuserinfo {<br/> Public static final string [] brandtypetrans ={< br/> "motion zone ", <br/> "Global connect" <br/>}; <br/> private int userinfoid =-1; <br/> private string phonenumber; <br/> private int brandtype; // brand 0: Dynamic zone; 1: Global pass <br/> private int balance; // user credit balance <br/> Public int getuserinfoid () {<br/> return userinfoid; <br/>}< br/> Public void setuserinfoid (INT userinfoid) {<br/> This. userinfoid = userinfoid; <br/>}< br/> Public String getphonenumber () {<br/> return phonenumber; <br/>}< br/> Public void setphonenumber (string phonenumber) {<br/> This. phonenumber = phonenumber; <br/>}< br/> Public int getbrandtype () {<br/> return brandtype; <br/>}< br/> Public void setbrandtype (INT brandtype) {<br/> This. brandtype = brandtype; <br/>}< br/> Public int getbalance () {<br/> return balance; <br/>}< br/> Public void setbalance (INT balance) {<br/> This. balance = balance; <br/>}< br/> Public Boolean isnew () {<br/> return (this. userinfoid =-1); <br/>}< br/> Public String getbrandtype_string () {<br/> return brandtypetrans [this. brandtype]; <br/>}< br/>}
Unit test code userinfodaotest. Java:
Package COM. example. jfxf. dao; <br/> Import Java. util. collection; <br/> Import Java. util. list; <br/> Import Org. JUnit. test; <br/> Import static Org. JUnit. assert. assertequals; <br/> Import static Org. JUnit. assert. asserttrue; <br/> Import static Org. JUnit. assert. assertnotnull; <br/> Import static Org. JUnit. assert. assertnull; <br/> Import Org. springframework. beans. factory. annotation. autowired; <br/> Import Org. springframework. test. context. contextconfiguration; <br/> Import Org. springframework. test. context. junit4.abstracttransactionaljunit4springcontexttests; <br/> Import COM. example. jfxf. model. jfxfuserinfo; <br/> @ contextconfiguration (locations = {"testcontext. XML "}) <br/> public class userinfodaotest extends <br/> abstracttransactionaljunit4springcontexttests {<br/> @ autowired <br/> protected userinfodao; <br/> @ test <br/> Public void getalluserinfo () {<br/> List <jfxfuserinfo> Users = This. userinfodao. getalluserinfos (); <br/> assertequals ("JDBC query must show the same number of userinfos", super. countrowsintable ("jfxf_user_info"), users. size (); <br/>}< br/> @ test <br/> Public void getuserinfobyid () {<br/> jfxfuserinfo userinfo = This. userinfodao. getuserinfobyid (1); <br/> assertequals ("139", userinfo. getphonenumber (); <br/>}< br/> @ test <br/> Public void getuserinfobyphonenumber () {<br/> jfxfuserinfo userinfo = This. userinfodao. getuserinfobyphonenumber ("139"); <br/> assertequals ("139", userinfo. getphonenumber (); <br/>}< br/> @ test <br/> Public void saveuserinfo () {<br/> jfxfuserinfo newuser = new jfxfuserinfo (); <br/> newuser. setbalance (1000); <br/> newuser. setbrandtype (1); <br/> newuser. setphonenumber ("136"); </P> <p> assertequals (-1, newuser. getuserinfoid (); </P> <p> This. userinfodao. saveuserinfo (newuser); <br/> system. out. println ("newuser. getuserinfoid () = "+ newuser. getuserinfoid (); <br/> asserttrue (newuser. getuserinfoid ()>-1); </P> <p> newuser. setphonenumber ("139"); <br/> This. userinfodao. saveuserinfo (newuser); <br/> assertequals ("139", newuser. getphonenumber (); <br/>}< br/> @ test <br/> Public void deleteuserinfo () {<br/> jfxfuserinfo user = This. userinfodao. getuserinfobyid (1); <br/> assertequals ("139", user. getphonenumber (); <br/> userinfodao. deleteuserinfo (User); <br/>}< br/>}
Spring configuration files are relatively simple and will not be listed here.
The database environment is Oracle, which corresponds to a sequence and trigger that generates a primary key in the database. It is not listed one by one.