MyBatis入门及CRUD
MyBatis是一个ORM的数据操作框架
myBatis的基本配置
首先创建一个普通 java项目,引入响应jar包,然后引入mybatis的xml配置,
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <!--这是一个跟标签--> 5 <configuration> 6 7 <!--链接properties--> 8 <properties resource="jdbc.properties" /> 9 10 <!--设置他的别名 设为包的话别名就是包下面的类名--> 11 <typeAliases> 12 13 <package name="cn.newsoft.domain"></package> 14 </typeAliases> 15 16 <!--配置环境们 17 default:默认使用的哪个环境 18 --> 19 <environments default="development"> 20 21 <!--配置单个环境--> 22 <environment id="development"> 23 <!--配置事务,有这两个属性 24 JDBC:使用JDBC的默认事务功能 25 MANAGED:表示没有事务 26 --> 27 <transactionManager type="JDBC"/> 28 <!--配置连接池--> 29 <dataSource type="POOLED"> 30 <property name="driver" value="${jdbc.driver}"/> 31 <property name="url" value="${jdbc.url}"/> 32 <property name="username" value="${jdbc.username}"/> 33 <property name="password" value="${jdbc.password}"/> 34 </dataSource> 35 </environment> 36 </environments> 37 <!--引入写sql语句的xml文件--> 38 <mappers> 39 <mapper resource="cn/newsoft/test/productMapper.xml"/> 40 </mappers> 41 </configuration>
配置链接数据库的properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///自己的数据库名 jdbc.username=自己用户名 jdbc.password=数据库密码
然后写好domain对象,然后在测试类写一个xml,这个xml中就是定义自己的sql语句,可以采用别名的方式,解决全限名的问题
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 5 6 <mapper namespace="cn.newsoft.test.productMapper"> 7 <!--parametertype表示传入参数的类型 8 resulttype表示每一条数据传出时的类型 9 --> 当damian中数据库字段和domain中的不对应时就可以用这个方法来统一字段 10 <resultMap id="prductMap" type="Product"> 11 <result column="dir_id" property="dirId"></result> 12 13 </resultMap> 14 15 <!--查询一个--> 16 <select id="findone" parameterType="long" resultType="Product"> 17 select * from product where id = #{id} 18 </select> 19 20 <!--查询全部--> 21 <select id="findAll" resultMap="prductMap"> 22 select * from product 23 </select> 24 25 <!--添加操作--> 26 <insert id="insert" parameterType="Product"> 27 insert into product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice) 28 values (#{productName},#{dirId},#{salePrice},#{supplier},#{brand},#{cutoff},#{costPrice}) 29 </insert> 30 31 <!--修改操作--> 32 <update id="update" parameterType="Product" > 33 update product set productName=#{productName},dir_id=#{dirId},salePrice=#{salePrice}, 34 supplier=#{supplier},brand=#{brand},cutoff=#{cutoff},costPrice=#{costPrice} where id=#{id} 35 36 </update> 37 <!--删除一个--> 38 <delete id="delete" parameterType="long"> 39 delete from product where id=#{id} 40 </delete> 41 </mapper>
然后我们定义一个工具类用来获取sqlsession对象
1 package cn.newsoft.util; 2 3 import org.apache.ibatis.io.Resources; 4 import org.apache.ibatis.session.SqlSession; 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 8 import java.io.IOException; 9 import java.io.Reader; 10 11 public class MybatisUtil { 12 private static SqlSessionFactory build; 13 static { 14 try { 15 Reader resource = Resources.getResourceAsReader("mybatis.xml"); 16 build = new SqlSessionFactoryBuilder().build(resource); 17 18 } catch (IOException e) { 19 e.printStackTrace(); 20 } 21 } 22 23 public static SqlSession gtSession(){ 24 SqlSession sqlSession = build.openSession(); 25 return sqlSession; 26 27 } 28 29 }
dao层为
1 package cn.newsoft.dao.impl; 2 3 import cn.newsoft.dao.IproductDao; 4 import cn.newsoft.domain.Product; 5 import cn.newsoft.util.MybatisUtil; 6 import org.apache.ibatis.session.SqlSession; 7 8 import java.util.List; 9 10 public class ProductImpl implements IproductDao { 11 12 @Override 13 public void save(Product product) { 14 SqlSession sqlSession = MybatisUtil.gtSession(); 15 sqlSession.insert("cn.newsoft.test.productMapper.insert", product); 16 17 } 18//cn.newsoft.test.productMapper.update"为命名空间的全限定名 update执行的方法名称 19 @Override 20 public void update(Product product) { 21 SqlSession sqlSession = MybatisUtil.gtSession(); 22 sqlSession.update("cn.newsoft.test.productMapper.update", product); 23 } 24 25 @Override 26 public void delete(Long id) { 27 SqlSession sqlSession = MybatisUtil.gtSession(); 28 sqlSession.delete("cn.newsoft.test.productMapper.delete", id); 29 } 30 31 @Override 32 public Product findone(Long id) { 33 SqlSession sqlSession = MybatisUtil.gtSession(); 34 Product o = (Product)sqlSession.selectOne("cn.newsoft.test.productMapper.findone",id); 35 return o; 36 } 37 38 @Override 39 public List<Product> findAll() { 40 SqlSession sqlSession = MybatisUtil.gtSession(); 41 List<Product> list = sqlSession.selectList("cn.newsoft.test.productMapper.findAll"); 42 return list; 43 } 44 }
然后在测试类中进行测试
1 package cn.newsoft.test; 2 3 4 import cn.newsoft.dao.impl.ProductImpl; 5 import cn.newsoft.domain.Product; 6 import cn.newsoft.util.MybatisUtil; 7 import org.apache.ibatis.session.SqlSession; 8 import org.junit.Test; 9 10 import java.util.List; 11 12 13 public class IproductDaoTest { 14 15 ProductImpl products = new ProductImpl(); 16 @Test 17 public void save() { 18 19 Product product = new Product(); 20 product.setProductName("sss"); 21 product.setSupplier("changcu"); 22 products.save(product); 23 24 } 25 26 @Test 27 public void update() { 28 Product findone = products.findone(22L); 29 findone.setProductName("李逵"); 30 products.update(findone); 31 } 32 33 @Test 34 public void delete() { 35 products.delete(21L); 36 } 37 38 @Test 39 public void findone() { 40 41 Product findone = products.findone(1L); 42 System.out.println(findone); 43 } 44 45 @Test 46 public void findAll() { 47 List<Product> all = products.findAll(); 48 all.forEach(e -> 49 System.out.println(e)); 50 } 51 }
这样就完成他的CRUD,
日志管理
引入jar包
1 #log4j.properties(日志文件:) 2 # ERROR错误的日志 WARN:警告 INFO:普通信息 DEBUG:调试日志 TRACE:日志 3 log4j.rootLogger=ERROR, stdout 4 #log4j.rootLogger=NONE 5 #把左边包名改成你自己的包名 6 log4j.logger.cn.itsource=TRACE 7 8 # 日志打印到控制台中 9 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 10 # 日志打印的一种格式(可以灵活地指定布局模式) 11 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 12 # 日志打印的格式是什么样子的 %d:日期 %p:优先级 %c:类的全名 %m:输出的结果 %n:换行 13 log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
转载于:https://www.cnblogs.com/xiaohuziguai/p/10651104.html
MyBatis入门及CRUD相关推荐
- 1、MyBatis框架入门学习CRUD
文章目录 框架前言 名词辨析 JavaWeb阶段回顾 框架介绍 ORM框架 MyBatis简介 MyBatis入门案例 1.环境准备 2.新建普通Maven项目,导入依赖 3.MyBatis核心配置文 ...
- MyBatis入门——分页
MyBatis入门--分页 一.使用limit分页 二.RowBounds Tips:请先阅读: 一.MyBatis入门--第一个MyBatis项目搭建文章 https://blog.csdn.net ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- MyBatis-学习笔记02【02.Mybatis入门案例】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- JavaWeb——MyBatis入门程序
一.引言 一般MyBatis与springMVC常常一起使用,而且与hibernate相比有着天然的优势,继续推进. MyBatis应用程序根据XML配置文件创建SqlSessionFactory,S ...
- Mybatis学习笔记——Mybatis入门
文章目录 Mybatis入门 1.为什么要使用mybatis? 2.ORM 3.mybatis简介 4.mybatis框架 5.mybatis入门程序 5.1搭建环境 5.2 配置log4j 5.3 ...
- Mybatis入门之动态sql
Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...
- MyBatis入门2
一.实现单一查询 1)核心配置文件:Configuration.xml 1 <?xml version="1.0" encoding="UTF-8"?&g ...
- MyBatis1:MyBatis入门
MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...
最新文章
- django之Ajax
- 数据结构及算法基础--优先队列(Priority Queue)
- Mysql5.7安装错误处理与主从同步及!
- php 数组合并_PHP数组常用函数分类整理
- php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
- 系统权限管理设计 (转)
- 解密微信介入智能硬件的逻辑
- Java Synchronized的用法
- 萌新分享打印当前目录下的所有文件和打印出里面java文件的代码
- XML学习之做过的实验——实验二
- 表的增删改查(一)(MySQL)
- 十分钟弄懂最快的APP自动化工具uiautomator2(入门到精通)
- c语言scan例子,SCAN和C-SCAN算法图解
- 电驴服务器更新的作用,怎样更新eMule(电驴)服务器列表,有什么好处?
- dbind-WARNING **: Error retrieving accessibility bus address
- oracle使用小技巧,Oracle在linux下使用小技巧
- 深入了解物联网,这几个物联网技术了解吗?
- Java千问:Java语言各种数字的“非常规”写法你都会吗?
- Google Summer of Code谷歌编程之夏活动流程全解析(上)
- Linux账号管理和ACL
热门文章
- 第九章构造数据类型实验
- 个人站立会议(11月17日)
- 【转/TCP协议编程】 基于TCP的Socket 编程
- 《第一行代码》学习笔记16-碎片Fragment(1)
- 一个java处理JSON格式数据的通用类(四)
- AMD芯片支持oracle数据库,oracle 11gR2 amdu 工具可以直接使用
- php中文乱码问号,如何解决PHP中文乱码问题?
- c语言如何打印矩形图形的程序 五行七列,C语言习题与实验
- 理解 Go defer
- linux内核网络协议栈--ip层报文转发之ip_local_out()函数(六)