MyBatis复习【简单配置CRUD】

这里的案例集成了log4j的日志框架,项目架构:

用到的jar文件

添加配置文件:mybatis-config.xml  和dao层配置文件StudentDao.xml

这里书写了个简单的案例仅为了说明问题

dao中有几个增删改查的抽象方法

 1 /**
 2      * 添加新的学生
 3      * @param stu
 4      * @return 返回 该insert语句成功后的自增列
 5      * @throws IOException
 6      */
 7     public int SaveInfo(Student stu) throws IOException;
 8
 9     /**
10      * 根据id删除学生信息
11      * @param stuno
12      * @return
13      * @throws IOException
14      */
15     public int DeleteInfo(int stuno) throws IOException;
16
17     /**
18      * 根据学生对象 模糊查询学生信息
19      */
20     public List<Student> getAllInfoByStudent(Student stu) throws IOException;
21
22     /**
23      * 根据学生姓名 模糊查询学生信息
24      */
25     public List<Student> getAllInfoByName(String stuName) throws IOException;
26     

书写doa对应的配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <mapper namespace="cn.zym.mybatis.dao">
 6     <!-- <select id="addStudent" parameterType="cn.zym.mybatis.entity.Student">
 7         insert into Student(stuname,stuage) values(#{stuName},#{stuAge})
 8     </select> -->
 9     <insert id="addStudent" parameterType="Student">
10         insert into Student(stuname,stuage) values(#{stuName},#{stuAge})
11         <selectKey keyProperty="stuNo" resultType="_integer" order="AFTER">
12         <!-- oracle需要设置order为BEFORE   :select seq_ssm.currval from dual(); -->
13             select @@identity
14         </selectKey>
15     </insert>
16
17     <delete id="deleteInfo" parameterType="int">
18         delete from student where stuno=#{stuno}
19     </delete>
20
21     <select id="getAllInfoByStudent" parameterType="Student" resultType="Student">
22         select * from student s where s.stuname like concat(‘%‘,#{stuName},‘%‘)
23     </select>
24
25     <select id="getAllInfoByName" resultType="Student">
26         select * from student s where s.stuname like ‘%${value}%‘<!-- 此处若要使用${xxx}的写法,其值必须为"value" -->
27     </select>
28
29
30
31
32 </mapper>

StudentDao.xml

在dao中使用的别名在大配置文件中设置别名:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- 配置cn.zym.mybatis.entity包下的所有bean的别名为简单类名; -->
 7     <typeAliases>
 8         <package name="cn.zym.mybatis.entity"/>
 9     </typeAliases>
10
11     <environments default="development">
12         <environment id="development">
13             <transactionManager type="JDBC" />
14             <dataSource type="POOLED">
15                 <property name="driver" value="com.mysql.jdbc.Driver" />
16                 <property name="url" value="jdbc:mysql://localhost:3306/zhangyiming" />
17                 <property name="username" value="zym" />
18                 <property name="password" value="admin" />
19             </dataSource>
20         </environment>
21     </environments>
22     <mappers>
23         <mapper resource="cn/zym/mybatis/dao/StudentDao.xml" />
24     </mappers>
25 </configuration>

Mybatis-config.xml

这两个文件中的头文件都可以到附带的pdf文档中获取   Getting started目录节点下可找到;

StudentDaoImpl

 1 package cn.zym.mybatis.dao.impl;
 2
 3 import java.io.IOException;
 4 import java.io.Reader;
 5 import java.util.List;
 6
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11
12 import cn.zym.mybatis.dao.IStudentDao;
13 import cn.zym.mybatis.entity.Student;
14 import cn.zym.mybatis.utils.MybatisUtils;
15
16 public class StudentDaoImpl implements IStudentDao {
17
18     /*@Override
19     public int SaveInfo(Student stu) throws IOException {
20         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
21         SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
22         SqlSession session = factory.openSession();
23         int insert = session.insert("addStudent",stu);
24         session.commit();
25         session.close();
26         return insert;
27     }*/
28
29     @Override
30     public int SaveInfo(Student stu) throws IOException {
31         SqlSession sqlSession = MybatisUtils.getSqlSession();
32         int insert = sqlSession.insert("addStudent",stu);
33         sqlSession.commit();
34         sqlSession.close();
35         return insert;
36     }
37
38     @Override
39     public int DeleteInfo(int stuno) throws IOException {
40         SqlSession sqlSession = MybatisUtils.getSqlSession();
41         int delete = sqlSession.delete("deleteInfo",stuno);
42         sqlSession.commit();
43         return delete;
44     }
45
46     @Override
47     public List<Student> getAllInfoByStudent(Student stu) throws IOException {
48         SqlSession sqlSession = MybatisUtils.getSqlSession();
49         List<Student> list = sqlSession.selectList("getAllInfoByStudent",stu);
50         return list;
51     }
52
53     @Override
54     public List<Student> getAllInfoByName(String stuName) throws IOException {
55         SqlSession sqlSession = MybatisUtils.getSqlSession();
56         List<Student> list = sqlSession.selectList("getAllInfoByName",stuName);
57         return list;
58     }
59
60 }

StudentDaoImpl

MybatisUtils

 1 package cn.zym.mybatis.utils;
 2
 3 import java.io.IOException;
 4 import java.io.Reader;
 5
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10
11 public class MybatisUtils {
12     static Reader reader =null;
13
14     static{
15         try {
16             reader = Resources.getResourceAsReader("mybatis-config.xml");
17         } catch (IOException e) {
18             e.printStackTrace();
19         }
20     }
21     static SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
22     public static SqlSession getSqlSession(){
23         SqlSession session = factory.openSession();
24         return session;
25
26     }
27
28
29
30 }

MybatisUtils

测试code

 1 package cn.zym.mybatis.test;
 2
 3 import java.io.IOException;
 4 import java.util.List;
 5
 6 import org.junit.Before;
 7 import org.junit.Test;
 8
 9 import cn.zym.mybatis.dao.IStudentDao;
10 import cn.zym.mybatis.dao.impl.StudentDaoImpl;
11 import cn.zym.mybatis.entity.Student;
12
13 public class Mytest {
14     IStudentDao dao ;
15     @Before
16     public void initalData(){
17         dao=  new StudentDaoImpl();
18     }
19
20     /**
21      * 模糊  姓名  查询学生信息
22      */
23     @Test
24     public void queryStudentByBean() throws IOException{
25         List<Student> list = dao.getAllInfoByStudent(new Student("zym2",21));
26         for (Student student : list) {
27             System.out.println(student);
28         }
29         System.out.println("ok!");
30     }
31
32     /**
33      * 模糊  姓名  查询学生信息
34      */
35     @Test
36     public void queryStudentByString() throws IOException{
37         List<Student> list = dao.getAllInfoByName("3");
38         for (Student student : list) {
39             System.out.println(student);
40         }
41         System.out.println("ok!");
42     }
43
44
45     /**
46      * 删除学生信息
47      */
48     @Test
49     public void deleteStudent() throws IOException{
50         dao.DeleteInfo(4);
51         System.out.println("ok!");
52     }
53
54     /**
55      * 添加学生信息
56      * @throws IOException
57      */
58     @Test
59     public void addStudent() throws IOException{
60         IStudentDao dao =  new StudentDaoImpl();
61         Student stu = new Student("zym", 21);
62         System.out.println("保存前:"+stu);
63         dao.SaveInfo(stu);
64         System.out.println("save ok!");
65         System.out.println("保存后:"+stu);
66     }
67 }

test code

时间: 2024-11-09 13:26:54

MyBatis复习【简单配置CRUD】的相关文章

Mybatis 复习 Mybatis 配置 Mybatis项目结构

项目结构: 我在applicationContext.xml中有两个跟mybatis有关的内容: <import resource="mybatis-config.xml"/>    这里面配置了mybatis自身的配置信息 <import resource="persistence-config.xml"/>    这里面配置了数据源信息 applicationContext.xml内容如下: <?xml version="

Mybatis框架的简单配置

Mybatis 的配置 1.创建项目(当然,这是废话) 2.导包 下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis/ 下载commson-dbcp :http://maven.aliyun.com/nexus/#nexus-search;quick~dbcp 下载ojdbc :http://maven.aliyun.com/nexus/#nexus-search;quick~ojdbc6 3.配置 主配置文件(

Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存: 自定义的缓存,比如Redis.Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍. 在这里主要记录系统缓存的一些简单概念, 并没有涉及原理.其中会涉及Mybatis的相关配置以及生命周期等. 主要参考资料:<深入浅出Mybatis基础原理与实战>,http://www.mybatis.org/mybatis-3/zh/index.html 1.Mybatis简单配置介绍 本文介绍的是基于XML的配置

MyBatis 使用简单的 XML或注解用于配置和原始映射

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .MyBatis是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的

springboot + mybatis 的项目,实现简单的CRUD

以前都是用Springboot+jdbcTemplate实现CRUD 但是趋势是用mybatis,今天稍微修改,创建springboot + mybatis 的项目,实现简单的CRUD  上图是项目的目录结构,创建一个user实体,包含id,姓名,手机,密码,flag等信息,然后对用户进行增删查改. drop table if exists user; CREATE TABLE `user` ( id tinyint(4) NOT NULL AUTO_INCREMENT, name varcha

MyBatis的简单介绍和几个基本问题

第一阶段  MyBatis阶段 2016年3月9日 星期三 1.为什么我们学习框架? 提高开发效率,框架是别人写好的工具类,我们需要遵循其规则进行操作 2.我们学习哪些框架 A.持久层框架:MyBatis 什么是持久化? 狭义:把数据永久性的保存到数据当中 广义:针对于数据库的所有操作都称为持久化操作 CreateReadUpdateDelete操作 面试:持久层框架?MyBatis  Hibernate Object[Java对象] Relation[数据库] Mapping[映射-通过框架来

Spring Boot (七): Mybatis极简配置

Spring Boot (七): Mybatis极简配置 1. 前言 ORM 框架的目的是简化编程中的数据库操作,经过这么多年的发展,基本上活到现在的就剩下两家了,一个是宣称可以不用写 SQL 的 Hibernate ,一个是对 SQL 非常友好的 Mybaties ,,两者各有特点,在企业级系统开发中可以根据需求灵活使用.发现一个有趣的现象:传统企业大都喜欢使用 Hibernate ,互联网行业通常使用 Mybatis . Hibernate 特点就是所有的 SQL 都用 Java 代码来生成

Spring、Spring MVC、MyBatis整合文件配置详解

使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ 基本的组织结构和用法就不说了,前面的博客和官方文档上都非常的全面.jar包可以使用Maven来组织管理.来看配置文件. web.xml的配置                                           

MyBatis复习

一.对JDBC的总结 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 解决方案:使用数据库连接池管理数据库连接. 2.将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护. 解决方案:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译. 3.向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统