Spring-MyBatis操作数据库

1.建立dao层接口baseDao.java与实现类testDaoImpl.java

\src\main\java\com\spring\dao目录下,建立ifcimpl目录,分别用来存放接口和实现类,在ifc目录中建立baseDao.java接口文件,在impl目录中建立testDaoImpl.java实现类文件;

baseDao.java文件:

1
2
3
4
5
6
7
8
9
package com.spring.dao.ifc;

import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;

public interface baseDao {
public List<Map<String, Object>> getList(JSONObject jsonObject);
}

testDaoImpl.java文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.spring.dao.impl.test;

import com.spring.dao.ifc.baseDao;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class testDaoImpl implements baseDao {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;

/**
* 数据库查询方法
* @param jsonObject 以键值对形式传入sql供Sql模板文件解析执行
* @数据格式:{"sql":"需要执行的sql语句"}
* @数据格式:{"field":"要查询的字段", "table":"要查询的表名", "where":"查询语句where条件"}
* 两种格式选择一种,这实际上是我根据上篇文章中提到的initDaoMapper.xml文件格式而定的,你也可以自己写!
* @return List<Map<String, Object>> 查询结果集
*/
@Override
public List<Map<String, Object>> getList(JSONObject jsonObject) {
return sqlSessionTemplate.selectList("TestDao.getList", jsonObject);
}
}

2.修改testService.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.spring.service.test;

import com.spring.dao.impl.test.testDaoImpl;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class testService {

//注入DAO
@Autowired
private testDaoImpl testDaoHand;

//这个例子里,getTestData的参数key没有用
public String getTestData(String key) {

JSONObject jo = new JSONObject();

/** 构造Sql模板需要使用的JSONObject */
jo.accumulate("sql", "select * from user");
/** 下面的形式与上面的作用是等价的 */
//jo.accumulate("table", "user");

JSONArray jr = JSONArray.fromObject(testDaoHand.getList(jo));
return jr.toString();
}
}

3.建立数据表,并写入一些测试数据

user.sql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(15) NOT NULL,
`tel` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('你', '156xxxx1501');
INSERT INTO `user` VALUES ('我', '858xxxx5858');
INSERT INTO `user` VALUES ('他', '123xxxx3213');

4.运行

在SpringMVC目录下执行下面命令:

1
2
3
mvn clean
mvn package
mvn tomcat:run

访问http://localhost:8080/SpringMVC/test/index
控制台打印出以下字符:
[{"username":"你","tel":"156xxxx1501"},{"username":"我","tel":"858xxxx5858"},{"username":"他","tel":"123xxxx3213"}]

5.关于增、删、改

其实归根到底,mybatis只是相当于在你与数据库之间构建起一道桥梁,你将你需要执行的sql利用mybatis通过mapper构建出来,再由mybatis发往数据库执行。这个例子里虽然只用到了查询,其实,你只要自己在mapper的xml文件里定义好增、删、改的sql模板,跟这个一样,传进去模板参数就执行了;

谢谢你的支持