java项目单独使用mybatis的小例子
来源:互联网 发布:北约扩展知乎 编辑:程序博客网 时间:2024/06/08 03:07
朋友让我帮他写几个接口,因为比较简单,使用jdbc编程,后来发现数据库字段和实体类中对象属性不能实现映射,我使用mybatis框架。我使用httpClient的post方式来测试接口,项目所需包如下:
目录结构:
在src创建数据库配置文件mysql.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=123456
创建实体对象Goods
package pojo;import java.math.BigDecimal;public class Goods {private String goodCode;private String barCode;private String nsUrl;private String categoryTitle;private String title;private String remark;private Integer reserve;private Integer packge;private BigDecimal price;private String dicount;private BigDecimal discountPrice;private Integer carCount;public String getGoodCode() {return goodCode;}public void setGoodCode(String goodCode) {this.goodCode = goodCode;}public String getBarCode() {return barCode;}public void setBarCode(String barCode) {this.barCode = barCode;}public String getNsUrl() {return nsUrl;}public void setNsUrl(String nsUrl) {this.nsUrl = nsUrl;}public String getCategoryTitle() {return categoryTitle;}public void setCategoryTitle(String categoryTitle) {this.categoryTitle = categoryTitle;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public Integer getReserve() {return reserve;}public void setReserve(Integer reserve) {this.reserve = reserve;}public Integer getPackge() {return packge;}public void setPackge(Integer packge) {this.packge = packge;}public BigDecimal getPrice() {return price;}public void setPrice(BigDecimal price) {this.price = price;}public String getDicount() {return dicount;}public void setDicount(String dicount) {this.dicount = dicount;}public BigDecimal getDiscountPrice() {return discountPrice;}public void setDiscountPrice(BigDecimal discountPrice) {this.discountPrice = discountPrice;}public Integer getCarCount() {return carCount;}public void setCarCount(Integer carCount) {this.carCount = carCount;}}
创建GoodsMapper.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="mapper.GoodsMapper"><!-- 自定义返回结果集 --><resultMap id="goodsMap" type="Goods"><id property="goodCode" column="goodCode" javaType="java.lang.String"></id><result property="barCode" column="barCode" javaType="java.lang.String"></result><result property="nsUrl" column="nsUrl" javaType="java.lang.String"></result><result property="categoryTitle" column="categoryTitle" javaType="java.lang.String"></result><result property="title" column="title" javaType="java.lang.String"></result><result property="remark" column="remark" javaType="java.lang.String"></result><result property="reserve" column="reserve" javaType="java.lang.Integer"></result><result property="packge" column="packge" javaType="java.lang.Integer"></result><result property="price" column="price" javaType="java.math.BigDecimal"></result><result property="dicount" column="dicount" javaType="java.lang.String"></result><result property="discountPrice" column="discountPrice" javaType="java.math.BigDecimal"></result><result property="carCount" column="carCount" javaType="java.lang.Integer"></result></resultMap><select id="selectAllGoods" resultMap="goodsMap">select * from goods</select><select id="selectRecommendGoods" resultMap="goodsMap">select * from goods limit 0,4;</select></mapper>
创建接口GoodsMapper.java
package mapper;import java.util.List;import pojo.Goods;public interface GoodsMapper {public List<Goods> selectAllGoods() throws Exception;public List<Goods> selectRecommendGoods() throws Exception;}
mybatis.cfg.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> <!-- 引入外部配置文件 --> <properties resource="mysql.properties"></properties> <!-- 为JAVA Bean起类别名 --> <typeAliases > <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名 <typeAliase type="com.cy.mybatis.beans.UserBean" alias="UserBean"/>--> <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 --> <package name="pojo"/> </typeAliases> <!-- 配置mybatis运行环境 --> <environments default="cybatis"> <environment id="cybatis"> <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --> <transactionManager type="JDBC" /> <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --> <!-- POOLED 表示支持JDBC数据源连接池 --> <!-- UNPOOLED 表示不支持数据源连接池 --> <!-- JNDI 表示支持外部数据源连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <!-- 告知映射文件方式1,一个一个的配置 <mapper resource="com/cy/mybatis/mapper/UserMapper.xml"/>--> <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 --> <package name="mapper"/> </mappers></configuration>
数据库连接工具类DBTools
package until;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class DBTools {public static SqlSessionFactory sessionFactory;static {try {// 使用MyBatis提供的Resources类加载mybatis的配置文件Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");// 构建sqlSession的工厂sessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}// 创建能执行映射文件中sql的sqlSessionpublic static SqlSession getSession() {return sessionFactory.openSession();}}
selectGoods.java 代码(servlet接口)
package test;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.ibatis.session.SqlSession;import mapper.GoodsMapper;import net.sf.json.JSONArray;import pojo.Goods;import until.DBTools;/** * Servlet implementation class TestSvrvlet */@WebServlet("/getAllGoods")public class selectGoods extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();try {out.println(selectAllGoods());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();try {out.println(selectAllGoods());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 整合mybatis后查询商品方法* * @return*/private String selectAllGoods() {JSONArray jr = new JSONArray();SqlSession session = DBTools.getSession();GoodsMapper mapper = session.getMapper(GoodsMapper.class);try {List<Goods> goodsList = mapper.selectAllGoods();System.out.println(goodsList.toString());jr = JSONArray.fromObject(goodsList);session.commit();} catch (Exception e) {e.printStackTrace();session.rollback();}System.out.println("jr" + jr);return jr.toString();}}
TestHttpClient.java
package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;public class TestHttpClient {public void postGoods() {// 创建默认的httpClient实例.CloseableHttpClient httpclient = HttpClients.createDefault();// 创建httppostHttpPost httppost = new HttpPost("http://localhost:8080/test/getAllGoods");UrlEncodedFormEntity uefEntity = null;try {httppost.setEntity(uefEntity);CloseableHttpResponse response = httpclient.execute(httppost);try {HttpEntity entity = response.getEntity();if (entity != null) {System.out.println("--------------------------------------");System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));System.out.println("--------------------------------------");}} finally {response.close();}} catch (ClientProtocolException e) {e.printStackTrace();} catch (UnsupportedEncodingException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {// 关闭连接,释放资源try {httpclient.close();} catch (IOException e) {e.printStackTrace();}}}//测试方法public static void main(String[] args) {TestHttpClient httpte = new TestHttpClient();httpte.postGoods();}}
控制台输出内容
--------------------------------------Response content: [{"carCount":0,"dicount":"","categoryTitle":"","remark":"很好","goodCode":"10000","packge":0,"discountPrice":0,"title":"笔记本","price":3000,"nsUrl":"","barCode":"1111","reserve":0},{"carCount":0,"dicount":"","categoryTitle":"","remark":"一般","goodCode":"10001","packge":0,"discountPrice":0,"title":"杯子","price":2500,"nsUrl":"","barCode":"4444","reserve":0},{"carCount":0,"dicount":"","categoryTitle":"","remark":"还可以","goodCode":"10002","packge":0,"discountPrice":0,"title":"水壶","price":20,"nsUrl":"","barCode":"2222","reserve":0},{"carCount":0,"dicount":"","categoryTitle":"","remark":"不错","goodCode":"10003","packge":0,"discountPrice":0,"title":"雨伞","price":30,"nsUrl":"","barCode":"3333","reserve":0},{"carCount":0,"dicount":"","categoryTitle":"","remark":"质量上好","goodCode":"10004","packge":0,"discountPrice":0,"title":"纸巾","price":5,"nsUrl":"","barCode":"5555","reserve":0},{"carCount":0,"dicount":"","categoryTitle":"","remark":"垃圾","goodCode":"10005","packge":0,"discountPrice":0,"title":"手机","price":3000,"nsUrl":"","barCode":"6666","reserve":0}]--------------------------------------
数据库,goods表
测试成功,整个流程跑通
阅读全文
0 0
- java项目单独使用mybatis的小例子
- Java 小例子:使你的 Java 程序使用单独的分辨率
- java项目中使用Hibernate的小例子
- mybatis单独使用
- MyBatis+log4j 的小例子
- MyBatis的一个小例子
- MyBatis使用接口映射的简单HelloWorld小例子
- mybatis 配置文件configuration environments以及单独使用mybatis的demo
- mybatis 配置文件configuration environments以及单独使用mybatis的demo
- java枚举的使用小例子
- java项目使用mybatis
- IKAnalyzer分词单独使用例子
- MYsql单独使用mybatis事务处理的无法回滚问题
- Java使用Properties小例子
- mybatis 初学 小例子
- mybatis 初学 小例子
- mybatis+spring的TODO小项目记录(六)使用mybatis进行数据库操作
- AJAX与java servlet结合使用的小例子
- ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别
- self.func(*self.args) 什么意思
- 通过MySQL自动同步刷新Redis
- centos yum安装php高版本
- 基础
- java项目单独使用mybatis的小例子
- Struts2从一个action转到另一个action的两种方法
- 算法训练:Remove K Digits
- 单链表求第几大元素
- 手机移动端百度开发覆盖物点击事件不起作用
- elasticsearch 初学入门
- E
- Xcode方便开发的插件推荐
- XlistView上下加载的使用方法