java项目单独使用mybatis的小例子
2017-05-17 11:29
579 查看
朋友让我帮他写几个接口,因为比较简单,使用jdbc编程,后来发现数据库字段和实体类中对象属性不能实现映射,我使用mybatis框架。我使用httpClient的post方式来测试接口,项目所需包如下:
目录结构:
在src创建数据库配置文件mysql.properties
创建实体对象Goods
创建GoodsMapper.xml
创建接口GoodsMapper.java
mybatis.cfg.xml配置
数据库连接工具类DBTools
selectGoods.java 代码(servlet接口)
TestHttpClient.java
控制台输出内容
数据库,goods表
测试成功,整个流程跑通
目录结构:
在src创建数据库配置文件mysql.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.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的sqlSession public 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 block e.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 block e.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(); // 创建httppost HttpPost 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表
测试成功,整个流程跑通
相关文章推荐
- 【初学Mybatis】No.1 使用Maven创建一个JavaWeb3.0项目
- 【java项目实践】在eclipse中使用利用mybatis-generator自动生成Model、Dao、mapping代码
- 使用windows或Linux脚本执行Java项目-JSON例子(二)
- java项目使用mybatis
- java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并
- java后台开发例子--使用Maven建立springmvc的web项目
- JAVA_WEB项目之j使用query的验证框架的例子
- JAVA应用程序单独集成Mybatis使用Demo
- java连接数据库方式(二):单独使用MyBatis 框架实现
- Mybatis的简单使用步骤(java项目) 4000
- 在使用Mybatis框架的JavaWeb项目中通过Mybatis Generator逆向工程自动生成Java类文件
- IDEA maven项目下测试mybatis例子,使用mappper class或package引入mapper映射文件,总是报错Invalid bound statement(所有配置完全正确)
- 使用windows或Linux脚本执行Java项目-JSON例子(二)
- java项目中使用Hibernate的小例子
- Java 小例子:使你的 Java 程序使用单独的分辨率
- 使用maven构建项目java.nio.BufferOverflowException问题的解决
- 在JAVA项目中,使用JasperReports与iReport,直接连接打印机可打印(word excel xml pdf )文档
- [ ANT ] ---------- 使用ANT协助开发java项目 (第二页)
- [转]Java的开源项目:简单介绍Log4J的使用
- [转]Java的开源项目:简单介绍Log4J的使用