MyBatis入门案例
1.案例架构
2.引入jar 包
3.书写配置文件mybatis-config.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> <!-- 设置别名 --> <typeAliases> <!-- 通过package, 可以直接指定package的名字, mybatis会自动扫描你指定包下面的javabean, 并且默认设置一个别名,默认的名字为: javabean 的首字母小写的非限定类名来作为它的别名 --> <!-- type指的是javabean的完全限定名 alias就是指代别名 --> <!-- <typeAlias alias="student" type="cn.entity.Student" /> --> <package name="cn.entity" /> </typeAliases> <environments default="development"> <environment id="development"> <!-- 使用jdbc的事务 --> <transactionManager type="JDBC" /> <!-- 使用自带的连接池 --> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="test" /> <property name="password" value="test" /> </dataSource> </environment> </environments> <mappers> <mapper resource="cn/dao/StudentDAO.xml" /> </mappers> </configuration>
4.创建实体类 Student
package cn.entity; /** * 学生实体类 * @author hyj * */ public class Student { private Integer id;//编号 private Integer age;//年龄 private String name;//姓名 public Student() { } public Student(Integer id, Integer age, String name) { super(); this.id = id; this.age = age; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [id=" + id + ", age=" + age + ", name=" + name + "]"; } }
5.创建学生的Dao以及Dao的实现
package cn.dao; import java.io.IOException; import java.util.List; import cn.entity.Student; /** * 学生的dao * @author hyj * */ public interface StudentDao { /** * 保存学生 * @param stu 学生对象 * @return 受影响行数 * @throws IOException */ int save(Student stu) throws IOException; /** * 根据id删除学生信息 * @param id * @return */ int delete(Integer id); /** * 查看学生列表 * @return */ List<Student> studentList(); /** * 根据学生姓名模糊查询学生信息 * @param name * @return */ List<Student> byNameList(String name); /** * 根据学生对象模糊查询学习姓名 * @param stu * @return */ List<Student> byNameList(Student stu); /** * 更新学生信息 * @param stu * @return */ int updateStudent(Student stu); }
package cn.dao.impl; import java.io.IOException; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import cn.dao.StudentDao; import cn.entity.Student; import cn.util.SqlSessionUtil; /** * 学生的dao实现类 * * @author hyj * */ public class StudenDaoImpl implements StudentDao { SqlSession session = SqlSessionUtil.getSqlSession(); /** * 添加学生信息 */ @Override public int save(Student stu) throws IOException { int result = session.insert("insertStudent", stu); // 提交事务 session.commit(); SqlSessionUtil.closeSqlSession(); return result; } /** * 根据id删除学生信息 */ @Override public int delete(Integer id) { int result = session.delete("deletStudent", id); session.commit(); SqlSessionUtil.closeSqlSession(); return result; } /** * 查询学生列表 * * @return */ @Override public List<Student> studentList() { List<Student> students = session.selectList("studentlist"); SqlSessionUtil.closeSqlSession(); return students; } /** * 根据学生姓名模糊查询学生列表:传入的参数是普通字符串 */ @Override public List<Student> byNameList(String name) { List<Student> students = session.selectList("byName", name); SqlSessionUtil.closeSqlSession(); return students; } /** * 根据学生对象模糊查询学生列表:传入的参数对象 */ @Override public List<Student> byNameList(Student stu) { List<Student> students = session.selectList("byStu", stu); SqlSessionUtil.closeSqlSession(); return students; } /** * 更新学生信息 */ @Override public int updateStudent(Student stu) { int result = session.update("updatestu", stu); session.commit(); SqlSessionUtil.closeSqlSession(); return result; } }
6.书写StudentDao的配置文件StudentDAO.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"> <mapper namespace="cn.dao"> <!-- 添加一条学生记录 --> <insert id="insertStudent" parameterType="student"> insert into student(id,age,name) values(id.nextval,#{age},#{name}) <!-- 自增列的值 --> <selectKey keyProperty="id" resultType="int"> SELECT ID.Nextval as ID from DUAL </selectKey> </insert> <!-- 根据id删除学生记录 --> <delete id="deletStudent"> delete from student where id=#{value} </delete> <!-- 查询所有学生记录 --> <select id="studentlist" resultType="student"> select * from student </select> <!-- 更新学生信息 --> <update id="updatestu" parameterType="student"> update student set age=#{age},name=#{name} where id=#{id} </update> <!-- 模糊查询 当入参是普通字符串时 --> <select id="byName" resultType="student"> select * from student where name like concat('%',#{name},'%') <!-- 方式一 --> <!-- select * from student where name like '%${value}%' --> <!-- select * from student where name like concat('%',#{name},'%') --> </select> <!-- 模糊查询 当入参是对象时 --> <select id="byStu" resultType="student"> <!-- 方式一 --> <!-- select * from student where name like '%${name}%' --> <!-- 方式二 --> select * from student where name like concat('%',#{name},'%') </select> </mapper>
7.工具类:用于获取SqlSession对象 SqlSessionUtil
package cn.util; import java.io.IOException; 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; /** * 这个工具类主要用来创建sqlsession对象 * @author hyj * */ public class SqlSessionUtil { //定义reader对象 static Reader reader; static SqlSessionFactory sqlSessionFactory; static SqlSession sqlsession; //静态代码初始化给reader,sessionFactory初始化 static{ try { reader=Resources.getResourceAsReader("mybatis-config.xml"); sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } /** * 获取SqlSession对象 * @return SqlSession对象 */ public static SqlSession getSqlSession(){ sqlsession=sqlSessionFactory.openSession(); return sqlsession; } /** * 关闭sqlsession */ public static void closeSqlSession(){ if(sqlsession!=null){ sqlsession.close(); } } }
8.测试类:
package cn.test; import java.io.IOException; import java.util.List; import org.junit.Before; import org.junit.Test; import cn.dao.StudentDao; import cn.dao.impl.StudenDaoImpl; import cn.entity.Student; public class StudentTest { StudentDao sd; @Before public void before() { // 创建Studentdao对象 sd = new StudenDaoImpl(); } /** * 添加学生信息 * * @throws IOException */ @Test public void addTest() throws IOException { // 创建学生对象 Student stu = new Student(); stu.setAge(20); stu.setName("笑话"); System.out.println("保存前:\n"+stu); // 调用dao保存 int save = sd.save(stu); System.out.println("保存后:\n"+stu); System.out.println("保存成功"); } /** * 删除学生信息 * * @throws IOException */ @Test public void deleteTest() throws IOException { // 调用dao保存 int save = sd.delete(2); System.out.println("删除成功"); } /** * 查看学生列表 */ @Test public void studentList() { List<Student> studentList = sd.studentList(); for (Student student : studentList) { System.out.println(student); } } /** * 更新学生信息 */ @Test public void updateStudent() { Student stu = new Student(); stu.setAge(99); stu.setName("呵呵"); stu.setId(5); int result = sd.updateStudent(stu); System.out.println("更新成功"+result); } /** * 根据学生姓名模糊查询学生列表:当传递的参数是普通类型时 */ @Test public void byNameList() { List<Student> studentList = sd.byNameList("1"); for (Student student : studentList) { System.out.println(student); } } /** * 根据学生对象模糊查询学生列表:当传递的参数是对象时 */ @Test public void byStuList() { // 创建学生对象 Student stu = new Student(); stu.setName("1"); List<Student> studentList = sd.byNameList(stu); for (Student student : studentList) { System.out.println(student); } } }
MyBatis入门案例的更多相关文章
- MyBatis入门案例、增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- MyBatis入门案例 增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- Mybatis入门案例中设计模式的简单分析
Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ...
- mybatis入门案例自定义实现
mybatis入门案例自定义实现 一.需要实现的类和接口 public static void main(String[] args) throws Exception{ //1.读取配置文件 Inp ...
- mybatis入门案例分析
mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exce ...
- 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例
mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...
- intellij IDEA Mybatis入门案例
最近打算学习ssm框架 Mybatis 作为入门的第一个持久层框架,学习起来实在费劲.故写此文章作为入门案例. 先打开 IDEA建立一个Maven项目,目录结构如下: 源代码已经上传至GitHub ...
- 一、mybatis入门案例
今天学习了mybatis框架,简单记录一下mybatis第一个入门案例,目标是使用Mybatis作为持久层框架,执行查询数据的SQL语句并且获取结果集 基本步骤: 物理建模 逻辑建模 引入依赖 创建持 ...
- 阶段3 1.Mybatis_02.Mybatis入门案例_1.mybatis的入门
H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2.0)-Mybatis\mybatis\mybatis_d ...
随机推荐
- Markdown的使用---现学现用
Markdown 是一种轻量级的标记语言,它的的优点很多,在这就不重复说了,最吸引人的应该是它清新简洁的界面,并且语法简单易学.最为常用的语法不会很多,用多了便自然而然的记住了. 可选工具 网上说如果 ...
- NHibernate常见问题及解决方法
NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...
- redis3.0配置文件详解
redis.conf #redis.conf # Redis configuration file example. # ./redis-server /path/to/redis.conf #### ...
- [LeetCode] Ones and Zeroes 一和零
In the computer world, use restricted resource you have to generate maximum benefit is what we alway ...
- Kinect for Windows SDK开发入门(十九):Kinect Fusion
Kinect for Windows SDK1.7中引入了Kinect Fusion功能.在1.8的SDK中对该功能进行了改进和强化,Kinect Fusion能够使得我们使用Kinect f ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- Laravel增删改查语句总结
<?php Class Que { /* * 查询: */ public function index() { $users = User::query()->paginate(20); ...
- 关于delphi exit 继承
父类窗体frm 继承下来一个子类 form2 父类按钮代码 procedure Tfrm.Button1Click(Sender: TObject); begin ShowMessage('); Ex ...
- Debian/Ubuntu安装SSH-Server(SFTP)
在Debian/Ubuntu命令行执行: sudo apt-get update sudo apt-get install ssh sudo apt-get install openssh-serve ...
- CSS3 border-image 属性
border-image 属性是一个简写属性,用于设置以下属性: border-image-source 用在边框的图片的路径,默认值none. 如:border-image-source:url(b ...