springmvc配置myBatis,並實現增刪改查、分頁功能
阿新 • • 發佈:2019-01-10
springmvc配置myBatis
myBatis是一個數據庫訪問的外掛,通過jdbc實現。
實現思路:
1.maven引入myBatis
<!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency>
2.springmvc整合myBatis
applicationContext.xml:
<!-- 資料庫連線配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}"/> <!-- 設定資料庫連線池的最大連線數 --> <property name="maxPoolSize" value="20"> </property> <!-- 設定資料庫連線池的最小連線數 --> <property name="minPoolSize" value="2"> </property> <!-- 設定資料庫連線池的初始化連線數 --> <property name="initialPoolSize" value="2"> </property> <!-- 設定資料庫連線池的連線的最大空閒時間,單位為秒 --> <property name="maxIdleTime" value="20"> </property> </bean> <!-- 資料庫事務配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <!-- mybatis資料庫跑著在 --> <!-- spring和MyBatis完美整合,不需要mybatis的配置對映檔案 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation"> <value>classpath:mysql/mybatis-config.xml</value> </property> <property name="mapperLocations"> <value>classpath*:Mapper/*.xml</value> </property> <property name="dataSource" ref="dataSource" /> </bean> <!-- DAO介面所在包名,Spring會自動查詢其下的類 --> <bean id="mapperScannerConfig" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.relaxPalace.web.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean>
myBatis實現增刪改查,分頁功能:
實現思路圖:
1.mybatis設定檔案,設定註解方式,第三方外掛、定義資料類
mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="Integer" type="java.lang.Integer" /> <typeAlias alias="String" type="java.lang.String" /> <typeAlias alias="Float" type="java.lang.Float" /> <typeAlias alias="Double" type="java.lang.Double" /> <typeAlias alias="Timestamp" type="java.sql.Timestamp" /> <typeAlias alias="List" type="java.util.List" /> <typeAlias alias="Map" type="java.util.Map"/> <typeAlias alias="HashMap" type="java.util.HashMap"/> <!-- 註解模式掃描實體類所在的包,在model裡面使用@Alias("User") --> <package name="com.relaxPalace" /> </typeAliases> <plugins> <!-- com.github.pagehelper為PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <!-- 該引數預設為false --> <!-- 設定為true時,會將RowBounds第一個引數offset當成pageNum頁碼使用 --> <!-- 和startPage中的pageNum效果一樣--> <property name="offsetAsPageNum" value="true"/> <!-- 該引數預設為false --> <!-- 設定為true時,使用RowBounds分頁會進行count查詢 --> <property name="rowBoundsWithCount" value="true"/> <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 --> <!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page型別)--> <property name="pageSizeZero" value="true"/> <!-- 3.3.0版本可用 - 分頁引數合理化,預設false禁用 --> <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 --> <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空資料 --> <property name="reasonable" value="false"/> <!-- 3.5.0版本可用 - 為了支援startPage(Object params)方法 --> <!-- 增加了一個`params`引數來配置引數對映,用於從Map或ServletRequest中取值 --> <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置對映的用預設值 --> <!-- 不理解該含義的前提下,不要隨便複製該配置 --> <property name="params" value="pageNum=start;pageSize=limit;"/> <!-- always總是返回PageInfo型別,check檢查返回型別是否為PageInfo,none返回Page --> <property name="returnPageInfo" value="check"/> </plugin> </plugins> </configuration>
2. 定義myBatis的sql執行檔案
userMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--Auto Create,Don't Modify,you should copy some sql config,because only have insert,update,full query and delete by primaryKey
@Author JiangZhiYong @date 2015年4月21日 11:28:58-->
<mapper namespace="com.relaxPalace.web.dao.userDao">
<resultMap id="usersResultMap" type="user" >
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="password" property="password"/>
<result column="describe" property="describe"/>
<result column="updateTime" property="updateTime"/>
</resultMap>
<!-- 獲取所有使用者資訊-->
<select id="getAllusers" resultType="list" resultMap="usersResultMap" >
SELECT * FROM rp_user
</select>
<!-- 獲取單個使用者資訊-->
<select id="getUserById" resultType="UsEr">
SELECT * FROM rp_user where id=#{userId}
</select>
<!-- 新增使用者資訊-->
<insert id="AddUser" parameterType="user" >
insert into rp_user(name,password,describee,updateTime) values(#{name},#{password},#{describee},#{updateTime});
</insert>
<!-- 刪除使用者資訊 -->
<update id="deleteUser" parameterType="String" >
delete from rp_user where id=#{userId}
</update>
<!-- 修改使用者資訊 -->
<update id="updateUser" parameterType="user" >
update rp_user set name=#{name},password=#{password},
describee=#{describee} where id=#{id}
</update>
</mapper>
3.對應資料庫表字段的model
User.java:
package com.relaxPalace.web.model;
import org.apache.ibatis.type.Alias;
import java.sql.Date;
/**
* Created by Administrator on 2017/6/22.
*/
@Alias("user")
public class User {
private Integer id;
private String name;
private String password;
private String describee;
private Date updateTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDescribee() {
return describee;
}
public void setDescribee(String describee) {
this.describee = describee;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", describee='" + describee + '\'' +
", updateTime=" + updateTime +
'}';
}
}
4.dao操作的介面
userDao.java:
public interface userDao {
//獲取所有的使用者
public List<User> getAllusers();
//獲取單個使用者的資訊
public User getUserById(String userId);
//新增刪除
public void AddUser(User user);
//刪除使用者
public void deleteUser(String userId);
//修改使用者
public void updateUser(User user);
}
5.Service層介面
userService.java:
package com.relaxPalace.web.service;
import com.relaxPalace.web.model.User;
import java.util.List;
/**
* Created by Administrator on 2017/6/22.
*/
public interface userService {
public List<User> getAllusers();
public User getUserById(String userId);
public void AddUser(User user);
public void deleteUser(String userId);
public void updateUser(User user);
}
userServiceImpl.java:
package com.relaxPalace.web.service.impl;
import com.relaxPalace.web.dao.userDao;
import com.relaxPalace.web.model.User;
import com.relaxPalace.web.service.userService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* Created by Administrator on 2017/6/22.
*/
@Service("userService")
public class userServiceImpl implements userService {
@Resource
private userDao userDao;
@Override
public List<User> getAllusers() {
return userDao.getAllusers();
}
@Override
public User getUserById(String userId) {
return userDao.getUserById(userId);
}
@Override
public void AddUser(User user) {
userDao.AddUser(user);
}
@Override
public void deleteUser(String userId) {
userDao.deleteUser(userId);
}
@Override
public void updateUser(User user) {
userDao.updateUser(user);
}
}
6.controller層呼叫
userController.java:
@RequestMapping("getAllusers")
@ResponseBody
public AjaxJson getAllusers(HttpServletRequest req) {
AjaxJson j = new AjaxJson();
HashMap<String,Object> map = new HashMap<String,Object>();
List<User> userList=userService.getAllusers();
System.out.println(userList);
map.put("userList:",userList);
j.setMsg("Ok");
j.setAttributes(map);
return j;
}