Spring 下 MyBatis 的基本使用
Posted Meng.NET
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 下 MyBatis 的基本使用相关的知识,希望对你有一定的参考价值。
参看代码 GitHub :
一、引入类库
1 <!-- mybatis核心包 --> 2 <dependency> 3 <groupId>org.mybatis</groupId> 4 <artifactId>mybatis</artifactId> 5 </dependency> 6 <!--mybatis spring 插件 --> 7 <dependency> 8 <groupId>org.mybatis</groupId> 9 <artifactId>mybatis-spring</artifactId> 10 </dependency> 11 <!-- mysql数据库驱动包 --> 12 <dependency> 13 <groupId>mysql</groupId> 14 <artifactId>mysql-connector-java</artifactId> 15 </dependency> 16 <!-- connection pool --> 17 <dependency> 18 <groupId>com.alibaba</groupId> 19 <artifactId>druid</artifactId> 20 <!--<scope>runtime</scope>--> 21 </dependency>
二、DB 与 Pool 的配置
1 #MySQL 2 jdbc.driver=com.mysql.jdbc.Driver 3 4 #基本属性 url、user、password 5 jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 6 jdbc.username=root 7 jdbc.password=liumeng 8 9 #配置初始化大小、最小、最大 10 jdbc.initialSize=1 11 jdbc.minIdle=1 12 jdbc.maxActive=20 13 14 #配置获取连接等待超时的时间 15 jdbc.maxWait=60000 16 17 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 18 jdbc.timeBetweenEvictionRunsMillis=60000 19 20 #配置一个连接在池中最小生存的时间,单位是毫秒 21 jdbc.minEvictableIdleTimeMillis=300000 22 23 jdbc.validationQuery=SELECT ‘x‘ 24 jdbc.testWhileIdle=true 25 jdbc.testOnBorrow=false 26 jdbc.testOnReturn=false 27 28 #打开PSCache,并且指定每个连接上PSCache的大小 29 jdbc.poolPreparedStatements=false 30 jdbc.maxPoolPreparedStatementPerConnectionSize=20 31 32 #配置监控统计拦截的filters 33 jdbc.filters=stat
三、Bean 的 配置
1.配置属性到bean
1 package lm.solution.web.config.properties; 2 3 import org.springframework.beans.factory.annotation.Value; 4 import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 import org.springframework.context.annotation.PropertySource; 6 import org.springframework.stereotype.Component; 7 8 @Component(value = "dbConfig") 9 @PropertySource("classpath:dbconfig.properties") 10 public class DbConfig { 11 12 @Value("${jdbc.url}") 13 private String url; 14 public String getUrl(){ 15 return this.url; 16 } 17 18 @Value("${jdbc.username}") 19 private String username; 20 public String getUsername(){ 21 return this.username; 22 } 23 24 @Value("${jdbc.password}") 25 private String password; 26 public String getPassword(){ 27 return this.password; 28 } 29 30 @Value("${jdbc.initialSize}") 31 private Integer initialSize; 32 public Integer getInitialSize(){ 33 return this.initialSize; 34 } 35 36 @Value("${jdbc.minIdle}") 37 private Integer minIdle; 38 public Integer getMinIdle(){ 39 return this.minIdle; 40 } 41 42 @Value("${jdbc.maxActive}") 43 private Integer maxActive; 44 public Integer getMaxActive(){ 45 return this.maxActive; 46 } 47 48 @Value("${jdbc.maxWait}") 49 private Long maxWait; 50 public Long getMaxWait() { 51 return this.maxWait; 52 } 53 54 @Value("${jdbc.timeBetweenEvictionRunsMillis}") 55 private Long timeBetweenEvictionRunsMillis; 56 public Long getTimeBetweenEvictionRunsMillis(){ 57 return this.timeBetweenEvictionRunsMillis; 58 } 59 60 @Value("${jdbc.minEvictableIdleTimeMillis}") 61 private Long minEvictableIdleTimeMillis; 62 public Long getMinEvictableIdleTimeMillis(){ 63 return this.minEvictableIdleTimeMillis; 64 } 65 66 @Value("${jdbc.validationQuery}") 67 private String validationQuery; 68 public String getValidationQuery(){ 69 return this.validationQuery; 70 } 71 72 @Value("${jdbc.testWhileIdle}") 73 private Boolean testWhileIdle; 74 public Boolean getTestWhileIdle(){ 75 return this.testWhileIdle; 76 } 77 78 @Value("${jdbc.testOnBorrow}") 79 private Boolean testOnBorrow; 80 public Boolean getTestOnBorrow(){ 81 return this.testOnBorrow; 82 } 83 84 @Value("${jdbc.testOnReturn}") 85 private Boolean testOnReturn; 86 public Boolean getTestOnReturn(){ 87 return this.testOnReturn; 88 } 89 90 @Value("${jdbc.poolPreparedStatements}") 91 private Boolean poolPreparedStatements; 92 public Boolean getPoolPreparedStatements(){ 93 return this.poolPreparedStatements; 94 } 95 96 @Value("${jdbc.maxPoolPreparedStatementPerConnectionSize}") 97 private Integer maxPoolPreparedStatementPerConnectionSize; 98 public Integer getMaxPoolPreparedStatementPerConnectionSize(){ 99 return this.maxPoolPreparedStatementPerConnectionSize; 100 } 101 102 @Value("${jdbc.filters}") 103 private String filters; 104 public String getFilters(){ 105 return this.filters; 106 } 107 108 private final static Object object=new Object(); 109 private static DbConfig config; 110 public static DbConfig getConfig(){ 111 return config; 112 } 113 114 static { 115 synchronized(object) { 116 AnnotationConfigApplicationContext configContext = new AnnotationConfigApplicationContext(DbConfig.class); 117 config = (DbConfig) configContext.getBean("dbConfig"); 118 } 119 } 120 121 122 }
2.配置组件 Bean
1 package lm.solution.web.config.beans; 2 3 import com.alibaba.druid.pool.DruidDataSource; 4 import lm.solution.web.config.properties.DbConfig; 5 import org.mybatis.spring.SqlSessionFactoryBean; 6 import org.mybatis.spring.mapper.MapperScannerConfigurer; 7 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Configuration; 9 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 10 11 import java.sql.SQLException; 12 13 @Configuration 14 public class MySqlBean { 15 16 // dataSource 配置数据源 17 @Bean( 18 name = "dataSource", 19 initMethod = "init", 20 destroyMethod = "close" 21 ) 22 public DruidDataSource druidDataSource(){ 23 24 try { 25 26 // 27 DbConfig db=DbConfig.getConfig(); 28 29 // 30 DruidDataSource dataSource = new DruidDataSource(); 31 dataSource.setUrl(db.getUrl()); 32 dataSource.setUsername(db.getUsername()); 33 dataSource.setPassword(db.getPassword()); 34 dataSource.setInitialSize(db.getInitialSize()); 35 dataSource.setMinIdle(db.getMinIdle()); 36 dataSource.setMaxActive(db.getMaxActive()); 37 dataSource.setMaxWait(db.getMaxWait()); 38 dataSource.setTimeBetweenEvictionRunsMillis(db.getTimeBetweenEvictionRunsMillis()); 39 dataSource.setMinEvictableIdleTimeMillis(db.getMinEvictableIdleTimeMillis()); 40 dataSource.setValidationQuery(db.getValidationQuery()); 41 dataSource.setTestWhileIdle(db.getTestWhileIdle()); 42 dataSource.setTestOnBorrow(db.getTestOnBorrow()); 43 dataSource.setTestOnReturn(db.getTestOnReturn()); 44 dataSource.setPoolPreparedStatements(db.getPoolPreparedStatements()); 45 dataSource.setMaxPoolPreparedStatementPerConnectionSize(db.getMaxPoolPreparedStatementPerConnectionSize()); 46 dataSource.setFilters(db.getFilters()); 47 return dataSource; 48 49 }catch (SQLException se){ 50 se.printStackTrace(); 51 } 52 53 return null; 54 55 } 56 57 // mybatis和spring完美整合,不需要mybatis的配置映射文件 58 @Bean(name = "sqlSessionFactory") 59 public SqlSessionFactoryBean sqlSessionFactoryBean(DruidDataSource dataSource){ 60 61 SqlSessionFactoryBean factory=new SqlSessionFactoryBean(); 62 factory.setDataSource(dataSource); 63 return factory; 64 65 } 66 67 // DAO接口所在包名,Spring会自动查找其下的类 68 @Bean 69 public MapperScannerConfigurer mapperScannerConfigurer(){ 70 71 MapperScannerConfigurer scannerConfigurer=new MapperScannerConfigurer(); 72 scannerConfigurer.setBasePackage("lm.solution.mapper"); 73 scannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); 74 return scannerConfigurer; 75 76 } 77 78 // 对dataSource 数据源进行事务管理 79 @Bean(name = "transactionManager") 80 public DataSourceTransactionManager dataSourceTransactionManager( DruidDataSource dataSource ){ 81 82 DataSourceTransactionManager transactionManager=new DataSourceTransactionManager(); 83 transactionManager.setDataSource(dataSource); 84 return transactionManager; 85 86 } 87 88 89 90 }
四、操作 mysql 数据库 -- 简单的CRUD
1. 实体
1 package lm.solution.pojo.entity; 2 3 public class User { 4 private Integer id; 5 6 private String name; 7 8 private String age; 9 10 private Integer salary; 11 12 public Integer getId() { 13 return id; 14 } 15 16 public void setId(Integer id) { 17 this.id = id; 18 } 19 20 public String getName() { 21 return name; 22 } 23 24 public void setName(String name) { 25 this.name = name == null ? null : name.trim(); 26 } 27 28 public String getAge() { 29 return age; 30 } 31 32 public void setAge(String age) { 33 this.age = age == null ? null : age.trim(); 34 } 35 36 public Integer getSalary() { 37 return salary; 38 } 39 40 public void setSalary(Integer salary) { 41 this.salary = salary; 42 } 43 }
2.MyBatis Mapper
1 package lm.solution.mapper; 2 3 import lm.solution.pojo.entity.User; 4 import lm.solution.mapper.provider.UserDynaSqlProvider; 5 import org.apache.ibatis.annotations.*; 6 7 import java.util.List; 8 9 public interface UserMapper { 10 11 @Select(" select * from user ") 12 List<User> findAllUsers(); 13 14 @Select(" select * from user where id=#{id} ") 15 User findById(long id); 16 17 @Select(" select * from user where name=#{name} ") 18 User findByName(String name); 19 20 @InsertProvider(type= UserDynaSqlProvider.class,method = "saveUser") 21 @Options(useGeneratedKeys = true,keyColumn = "id") 22 Integer saveUser(User user); 23 24 @UpdateProvider(type = UserDynaSqlProvider.class,method = "updateUser") 25 Integer updateUser(User user); 26 27 @Delete(" delete from user where id=#{id} ") 28 Integer deleteUser(long id); 29 30 @Delete(" delete from user where 1=1 ") 31 Integer deleteAllUsers(); 32 }
1 package lm.solution.mapper.provider; 2 3 import lm.solution.pojo.entity.User; 4 import org.apache.ibatis.jdbc.SQL; 5 6 public class UserDynaSqlProvider { 7 8 9 public String saveUser(final User user) { 10 return new SQL() { 11 { 12 INSERT_INTO("user"); 13 if(user.getName()!=null&&!"".equals(user.getName())){ 14 VALUES("name","#{name}"); 15 } 16 if(user.getAge()!=null&&!"".equals(user.getAge())){ 17 VALUES("age","#{age}"); 18 } 19 if(user.getSalary()!=null){ 20 VALUES("salary","#{salary}"); 21 } 22 } 23 }.toString(); 24 } 25 26 public String updateUser(final User user){ 27 return new SQL(){ 28 { 29 UPDATE("user"); 30 if(user.getName()!=null && !"".equals(user.getName())){ 31 SET(" name=#{name} "); 32 } 33 if(user.getAge()!=null && !"".equals(user.getAge())){ 34 SET(" age=#{age} "); 35 } 36 if(user.getSalary()!=null){ 37 SET(" salary=#{salary} "); 38 } 39 WHERE(" id=#{id} "); 40 } 41 }.toString(); 42 } 43 44 45 }
3.Service
1 package lm.solution.service.mysql; 2 3 import lm.solution.pojo.entity.User; 4 import java.util.List; 5 6 public interface UserService { 7 8 List<User> findAllUsers(); 9 10 User findById(long id); 11 12 boolean isUserExist(User user); 13 14 void saveUser(User user); 15 16 void updateUser(User user); 17 18 void deleteUser(long id); 19 20 void deleteAllUsers(); 21 22 }
1 package lm.solution.service.mysql.impl; 2 3 import lm.solution.pojo.entity.User; 4 import lm.solution.mapper.UserMapper; 5 import lm.solution.service.mysql.UserService; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Service; 8 import org.springframework.transaction.annotation.Transactional; 9 import org.springframework.transaction.annotation.Propagation; 10 import org.springframework.transaction.annotation.Isolation; 11 import java.util.List; 12 13 @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT) 14 @Service("userService") 15 public class UserServiceImpl implements UserService { 16 17 @Autowired 18 private UserMapper userMapper; 19 20 21 @Override 22 public List<User> findAllUsers() { 23 return userMapper.findAllUsers(); 24 //return null; 25 } 26 27 @Override 28 public User findById(long id) { 29 //return null; 30 31 return userMapper.findById(id); 32 } 33 34 @Override 35 public boolean isUserExist(User user) { 36 37 User userDB=userMapper.findByName(user.getName()); 38 if(userDB==null){ 39 return false; 40 }else { 41 return true; 42 } 43 } 44 45 @Override 46 public void saveUser(User user) { 47 userMapper.saveUser(user); 48 } 49 50 @Override 51 public void updateUser(User user) { 52 userMapper.updateUser(user); 53 } 54 55 @Override 56 public void deleteUser(long id) { 57 userMapper.deleteUser(id); 58 } 59 60 @Override 61 public void deleteAllUsers() { 62 userMapper.deleteAllUsers(); 63 } 64 65 66 }
4.Controller
1 package lm.solution.web.controller.db; 2 3 import com.fasterxml.jackson.core.JsonProcessingException; 4 import com.fasterxml.jackson.databind.ObjectMapper; 5 import lm.solution.pojo.entity.User; 6 import lm.solution.service.mysql.UserService; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Qualifier; 9 import org.springframework.stereotype.Controller; 10 import org.springframework.web.bind.annotation.*; 11 12 import java.io.IOException; 13 import java.util.List; 14 15 @Controller 16 public class MyBatisController { 17 18 private static ObjectMapper objectMapper; 19 20 @Autowired 21 @Qualifier("userService") 22 private UserService userService; 23 24 static { 25 objectMapper = new ObjectMapper(); 26 } 27 28 @RequestMapping( 29 value = "/mybatis/userall", 30 method = RequestMethod.GET, 31 produces = {"application/json;charset=UTF-8"}) 32 @ResponseBody 33 public String allUsers() { 34 35 try { 36 List<User> users = userService.findAllUsers(); 37 return objectMapper.writeValueAsString(users); 38 } catch (IOException ioe) { 39 ioe.printStackTrace(); 40 return "{}"; 41 } 42 43 } 44 45 @RequestMapping( 46 value = "/mybatis/{id}", 47 method = RequestMethod.GET, 48 produces = {"application/json;charset=UTF-8"}) 49 @ResponseBody 50 public String getUserById(@PathVariable("id") long id) { 51 52 try { 53 User user = userService.findById(id); 54 return objectMapper.writeValueAsString(user); 55 } catch (IOException ioe) { 56 ioe.printStackTrace(); 57 return "{}"; 58 } 59 } 60 61 @RequestMapping( 62 value = "/mybatis/create", 63 method = RequestMethod.POST, 64 consumes = {"application/json"}, 65 produces = {"application/json;charset=UTF-8"}) 66 @ResponseBody 67 public String create(@RequestBody User user) { 68 69 try { 70 71 userService.saveUser(user); 72 return objectMapper.writeValueAsString(user); 73 74 }catch (JsonProcessingException jpe){ 75 jpe.printStackTrace(); 76 } 77 78 return "{}"; 79 80 } 81 82 @RequestMapping( 83 value = "/mybatis/update", 84 method = RequestMethod.PUT, 85 consumes = {"application/json"}, 86 produces = {"application/json;charset=UTF-8"}) 87 @ResponseBody 88 public String update(@RequestBody User user) { 89 90 try { 91 92 userService.updateUser(user); 93 return objectMapper.writeValueAsString(user); 94 95 }catch (JsonProcessingException jpe){ 96 jpe.printStackTrace(); 97 } 98 99 return "{}"; 100 101 } 102 103 @RequestMapping( 104 value = "/mybatis/{id}", 105 method = RequestMethod.DELETE, 106 produces = {"application/json;charset=UTF-8"}) 107 @ResponseBody 108 public String deleteById(@PathVariable("id") long id) { 109 userService.deleteUser(id); 110 return "success"; 111 112 } 113 114 @RequestMapping( 115 value = "/mybatis", 116 method = RequestMethod.DELETE, 117 produces = {"application/json;charset=UTF-8"}) 118 @ResponseBody 119 public String deleteAll() { 120 userService.deleteAllUsers(); 121 return "success"; 122 123 } 124 125 }
5.View
1 <%-- 2 Created by IntelliJ IDEA. 3 User: liumeng 4 Date: 2018/3/2 5 Time: 14:25 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>MySQL op by MyBatis</title> 12 <script src="/assets/js/jquery-3.3.1.js"></script> 13 </head> 14 <body> 15 <p> 16 <button id="btnAllusers">GET-查看所有</button> 17 <br> 18 <div id="getAllusers"></div> 19 <br> 20 <script> 21 $(function () { 22 $(‘#btnAllusers‘).on("click", function (e) { 23 var request = $.ajax({ 24 url: "/mybatis/userall", 25 method: "GET" 26 }); 27 28 request.done(function (data) { 29 if (data) { 30 var html = ""; 31 for (var i = 0; i < data.length; i++) { 32 html += "<span>id</sapn>:<span>" + data[i].id + "</span><br>"; 33 html += "<span>name</sapn>:<span>" + data[i].name + "</span><br>"; 34 html += "<span>age</sapn>:<span>" + data[i].age + "</span><br>"; 35 html += "<span>salary</sapn>:<span>" + data[i].salary + "</span><br>"; 36 html += "<br>----------------------------------------------------------<br>"; 37 } 38 $("#getAllusers").html(html); 39 } 40 }); 41 42 request.fail(function (jqXHR, textStatus) { 43 alert("Request failed: " + textStatus); 44 }); 45 }); 46 }); 47 </script> 48 <hr> 49 <button id="btnUserByID">GET-查看ByID</button> 50 <br> 51 <span>ID:</span><input type="text" id="userbyIDtx"> 52 <br> 53 <div id="UserByID"></div> 54 <br> 55 <script> 56 $(function () { 57 $(‘#btnUserByID‘).on("click", function (e) { 58 var request = $.ajax({ 59 url: "/mybatis/"+$("#userbyIDtx").val(), 60 method: "GET", 61 dataType:"json" 62 }); 63 64 request.done(function (data) { 65 if (data) { 66 var html = ""; 67 html += "<span>id</sapn>:<span>" + data.id + "</span><br>"; 68 html += "<span>name</sapn>:<span>" + data.name + "</span><br>"; 69 html += "<span>age</sapn>:<span>" + data.age + "</span><br>"; 70 html += "<span>salary</sapn>:<span>" + data.salary + "</span><br>"; 71 html += "<br>----------------------------------------------------------<br>"; 72 $("#UserByID").html(html); 73 } 74 }); 75 76 request.fail(function (jqXHR, textStatus) { 77 alert("Request failed: " + textStatus); 78 }); 79 }); 80 }); 81 </script> 82 <hr> 83 <button id="createOne">POST-创建一个</button> 84 <br> 85 <span>ID:</span><input type="text" disabled="disabled" ><br> 86 <span>Name:</span><input type="text" id="createName" ><br> 87 <span>Age:</span><input type="text" id="createAge" ><br> 88 <span>Salary:</span><input type="text" id="createSalary" > 89 <br> 90 <div id="createUser"></div> 91 <br> 92 <script> 93 $(function () { 94 $(‘#createOne‘).on("click", function (e) { 95 var data={ 96 name:$("#createName").val(), 97 age:$("#createAge").val(), 98 salary:$("#createSalary").val() 99 }; 100 101 var request = $.ajax({ 102 url: "/mybatis/create", 103 method: "POST", 104 data:JSON.stringify(data), 105 contentType:"application/json" 106 //dataType:"json" 107 }); 108 109 request.done(function (data) { 110 if (data) { 111 var html = ""; 112 html += "<span>id</sapn>:<span>" + data.id + "</span><br>"; 113 html += "<span>name</sapn>:<span>" + data.name + "</span><br>"; 114 html += "<span>age</sapn>:<span>" + data.age + "</span><br>"; 115 html += "<span>salary</sapn>:<span>" + data.salary + "</span><br>"; 116 html += "<br>----------------------------------------------------------<br>"; 117 $("#createUser").html(html); 118 } 119 }); 120 121 request.fail(function (jqXHR, textStatus) { 122 alert("Request failed: " + textStatus); 123 }); 124 }); 125 }); 126 </script> 127 <hr> 128 <button id="putOne">PUT-更新一个</button> 129 <br> 130 <span>ID:</span><input type="text" id="putId" ><br> 131 <span>Name:</span><input type="text" id="putName" ><br> 132 <span>Age:</span><input type="text" id="putAge" ><br> 133 <span>Salary:</span><input type="text" id="putSalary" > 134 <br> 135 <div id="putUser"></div> 136 <br> 137 <script> 138 $(function () { 139 $(‘#putOne‘).on("click", function (e) { 140 var data={ 141 id:$("#putId").val(), 142 name:$("#putName").val(), 143 age:$("#putAge").val(), 144 salary:$("#putSalary").val() 145 }; 146 147 var request = $.ajax({ 148 url: "/mybatis/update", 149 method: "PUT", 150 data:JSON.stringify(data), 151 contentType:"application/json" 152 //dataType:"json" 153 }); 154 155 request.done(function (data) { 156 if (data) { 157 var html = ""; 158 html += "<span>id</sapn>:<span>" + data.id + "</span><br>"; 159 html += "<span>name</sapn>:<span>" + data.name + "</span><br>"; 160 html += "<span>age</sapn>:<span>" + data.age + "</span><br>"; 161 html += "<span>salary</sapn>:<span>" + data.salary + "</span><br>"; 162 html += "<br>----------------------------------------------------------<br>"; 163 $("#createUser").html(html); 164 } 165 }); 166 167 request.fail(function (jqXHR, textStatus) { 168 alert("Request failed: " + textStatus); 169 }); 170 }); 171 }); 172 </script> 173 <hr> 174 <button id="deleteOne">DELETE-删除一个</button> 175 <br> 176 <span>ID:</span><input type="text" id="deleteId" ><br> 177 <!--<span>Name:</span><input type="text" id="putName" ><br> 178 <span>Age:</span><input type="text" id="putAge" ><br> 179 <span>Salary:</span><input type="text" id="putSalary" >--> 180 <br> 181 <div id="deleteUser"></div> 182 <br> 183 <script> 184 $(function () { 185 $(‘#deleteOne‘).on("click", function (e) { 186 // var data={ 187 // id:$("#putId").val(), 188 // name:$("#putName").val(), 189 // age:$("#putAge").val(), 190 // salary:$("#putSalary").val() 191 // }; 192 193 var request = $.ajax({ 194 url: "/mybatis/"+$("#deleteId").val(), 195 method: "DELETE", 196 // data:JSON.stringify(data), 197 contentType:"application/json" 198 //dataType:"json" 199 }); 200 201 request.done(function (data) { 202 if (data) { 203 var html = ""; 204 // html += "<span>id</sapn>:<span>" + data.id + "</span><br>"; 205 // html += "<span>name</sapn>:<span>" + data.name + "</span><br>"; 206 // html += "<span>age</sapn>:<span>" + data.age + "</span><br>"; 207 // html += "<span>salary</sapn>:<span>" + data.salary + "</span><br>"; 208 // html += "<br>----------------------------------------------------------<br>"; 209 $("#createUser").html(data); 210 } 211 }); 212 213 request.fail(function (jqXHR, textStatus) { 214 alert("Request failed: " + textStatus); 215 }); 216 }); 217 }); 218 </script> 219 <hr> 220 <button id="deleteAll">DELETE-删除所有</button> 221 <br> 222 <div id="deleteUserAll"></div> 223 <br> 224 <script> 225 $(function () { 226 $(‘#deleteAll‘).on("click", function (e) { 227 var request = $.ajax({ 228 url: "/mybatis", 229 method: "DELETE", 230 // data:JSON.stringify(data), 231 contentType:"application/json" 232 //dataType:"json" 233 }); 234 235 request.done(function (data) { 236 if (data) { 237 var html = ""; 238 // html += "<span>id</sapn>:<span>" + data.id + "</span><br>"; 239 // html += "<span>name</sapn>:<span>" + data.name + "</span><br>"; 240 // html += "<span>age</sapn>:<span>" + data.age + "</span><br>"; 241 // html += "<span>salary</sapn>:<span>" + data.salary + "</span><br>"; 242 // html += "<br>----------------------------------------------------------<br>"; 243 $("#deleteUserAll").html(data); 244 } 245 }); 246 247 request.fail(function (jqXHR, textStatus) { 248 alert("Request failed: " + textStatus); 249 }); 250 }); 251 }); 252 </script> 253 <hr> 254 </p> 255 </body> 256 </html>
蒙
2018-05-08 00:15 周二
以上是关于Spring 下 MyBatis 的基本使用的主要内容,如果未能解决你的问题,请参考以下文章
org.mybatis.spring.sqlsessionfactorybean在哪个包
spring整合mybatis时运行测试代码报错,是怎么回事?