MyBatis初探——增删改查
来源:互联网 发布:英雄无敌3mac版 编辑:程序博客网 时间:2024/06/13 23:19
MyBatis的sql语句
MyBatis的sql语句并不是写在java代码中,而是写在配置文件中。MyBatis在启动的时候会读取配置文件的信息,将sql代码放入对应的区域的。等待dao层的调用。配置文件同样也是xml格式。新建一个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"> <!--namespace为命名空间,必须保证唯一,一般将一个实体的数据库操作都放入同一个xml配置中 --><mapper namespace="customer"> <!-- 这里面配置sql --></mapper>
sql查询语句
查询语句用select标签标示,标签的id必须在本xml保证唯一。以为后面MyBatis调用sql语句的时候是根据id名来调用的,如果重复MyBatis则无法找到对应的sql语句进行执行。既然是查询,查询的结果就必须封装到实体类中。MyBatis也提供了封装的方式。同样也是写在配置文件中。resultMap对应的就是封装的配置。
<resultMap type="com.lingjiu.model.Customer" id="customerMapper"> <!-- id表示主键其实和result区别并不大。 property表示在这个实体类中的字段名 javaType表示这个字段的类型 column 表示这个字段对应的数据库字段名 jdbcType 表示这个字段在数据库的类型 这四项也可以都不写。MyBatis也会根据类名里的字段名寻找并进行封装,但如果数据库字段和实体类字段不同则需配置 --> <id property="customerId" javaType="int" column="customerId" jdbcType="INTEGER" /> <result property="customerName" javaType="java.lang.String" column="customerName" jdbcType="VARCHAR"/> <result property="customerTel" javaType="java.lang.String" column="customerTel" jdbcType="VARCHAR"/> <result property="customerAddress" javaType="java.lang.String" column="customerAddress" jdbcType="VARCHAR"/> </resultMap><select id="selectCustomer" resultMap="customerMapper"> select customerId,<include refid="customerField"></include> from customer</select>
实体类的Customer字段设计
public class Customer { /** * 客户id,主键 */ private int customerId; /** * 客户姓名 */ private String customerName; /** * 客户电话 */ private String customerTel; /** * 客户收货地址 */ private String customerAddress; //set和get忽略......}
因为配置文件为xml格式。所以我们需要加入到总的配置文件中这样MyBatis在运行的时候才会加载配置文件
<!--放入configuration标签的尾部 --> <mappers> <!--resource为配置文件的路径 --> <mapper resource="com/lingjiu/config/sqlxml/CustomerMapper.xml" /> </mappers>
sql语句执行
配置好了我们可以在java代码中执行其中的方法。
@Test public void selectTest(){ List<Customer> list = null; //数据库连接 SqlSession sqlSession = null; try { //上一次节封装的获取数据库连接方法 sqlSession = DBAccess.getSqlSession(); //执行的sql查询方法,selectList也可以再传递一个参数,参数类型为Object用来传递sql查询条件 list = sqlSession.selectList("customer.selectCustomer"); for (int i = 0; i < list.size(); i++) { Customer customer = list.get(i); System.out.println(customer.getCustomerId()+","+customer.getCustomerName()+","+customer.getCustomerTel()+","+customer.getCustomerAddress()); } } catch (Exception e) { e.printStackTrace(); }finally{ if(sqlSession!=null){ sqlSession.close(); } } } //打印结果:1,李雷1,1101,北京1
sql插入语句配置
插入语句用标签insert表示。java调用的方法和查询语句类似,
//parameterType为传入的类型。Mybatis会取字段的值来放入对应的位置。//#{customerName}为取值方法。customerName必须和parameterType的实体类字段名相同。<insert id="insertCustomer" parameterType="com.lingjiu.model.Customer"> insert into customer (customerName,customerTel,customerAddress) values (#{customerName},#{customerTel},#{customerAddress}) </insert>//java语法sqlSession.insert("customer.insertCustomer", customer);//必须注意执行完上面的方法后必须执行:sqlSession.commit();进行事物提交否则无法保存数据//返回值1为成功,0为失败
如果数据库主键是系统自动生产的,则可以配置获取保存后的数据主键
//keyProperty为parameterType配置的类中的字段名 Mybatis会自动保存进去<insert id="insertCustomer" useGeneratedKeys="true" keyProperty="customerId" parameterType="com.lingjiu.model.Customer"> insert into customer (customerName,customerTel,customerAddress) values (#{customerName},#{customerTel},#{customerAddress})</insert>//customer为上面配置的parameterType="com.lingjiu.model.Customer"类型//java语法sqlSession.insert("customer.insertCustomer", customer);//必须注意执行完上面的方法后必须执行:sqlSession.commit();进行事物提交否则无法保存数据
MyBatis还提供了sql标签用来配置常用的sql语句,比如像字段
include标签可以根据refid找到对应的sql语句。进行语句拼接。防止写入大量重复语句。
<sql id="customerField">customerName,customerTel,customerAddress</sql><insert id="insertCustomer" useGeneratedKeys="true" keyProperty="customerId" parameterType="com.lingjiu.model.Customer"> insert into customer (<include refid="customerField"></include>) values (#{customerName},#{customerTel},#{customerAddress}) </insert>
sql删除
<delete id="deleteCustomer" parameterType="com.lingjiu.model.Customer"> delete from customer where customerId = #{customerId} </delete>//java语法sqlSession.insert("customer.deleteCustomer", customer);//必须注意执行完上面的方法后必须执行:sqlSession.commit();进行事物提交否则无法保存数据//返回值1为成功,0为失败
sql更改
<update id="updateCustomer" parameterType="com.lingjiu.model.Customer"> update customer set customerName = #{customerName},customerTel = #{customerTel},customerAddress = #{customerAddress} where customerId = #{customerId} </update>//java语法result = sqlSession.update("customer.updateCustomer",customer);//必须注意执行完上面的方法后必须执行:sqlSession.commit();进行事物提交否则无法保存数据//返回值1为成功,0为失败
select,delete,update,insert这写标签还有子标签,where,set,等用法。这些标签里面有if标签进行条件判定。
阅读全文
0 0
- MyBatis初探——增删改查
- Mybatis 增删改查
- mybatis增删改查
- mybatis增删改查
- mybatis 增删改查
- MyBatis增删改查
- mybatis--增删改查
- MyBatis增删改查
- MyBatis增删改查
- mybatis增删改查
- Mybatis增删改查
- mybatis增删改查
- mybatis增删改查
- mybatis增删改查
- MyBatis 查增删改
- Mybatis基础入门(三)——增删改查
- Mybatis学习使用(一) —— 增删查改
- Mybatis初级应用——实现增删查改
- Debian (stretch 9.0)的一些升级后的修复工作, virtualbox不能启动
- Android深入浅出之Binder机制
- java容器之七_TreeMap与红黑二叉树
- 基于maven使用IDEA创建多模块项目
- Android用scrollview做一张表
- MyBatis初探——增删改查
- Android 开发软件架构思考以及经验总结
- SPI 基本介绍
- Android使用Gallery实现轮播图效果
- 偏向锁,轻量级,重量级锁的理解
- Invalid Toolchain
- php+stomp+activemq,实现producer
- 51nod 1565 模糊搜索
- install redis-server on centos7