mybatis中使用XML配置文件方式实现CRUD模板流程
场景
Eclipse+Mybatis3.4+log4j1.2+mysql5.7
使用新手入门学习Mybatis时实例模板。
实现
Eclipse中新建项目
1.打开EClipse,File--new--java Project,名字叫做MybatisTemplate,点击Finish。
2.然后右击项目--Build Path--Config Build Path
3.选择Libraries下的Add External JARs
4.选择mybatis的jar包、log4j的jar包、连接mysql所需要的jar包
jar包下载:https://github.com/badaoliumang/jarPackageCollection
5.然后点击Apply--Apply and Close
6.新建包,目录如下
7.新建配置文件log4j.properties(log4j日志配置文件)、mybatis-config.xml(mybatis配置文件),目录如下
创建数据库
1.新建数据库ssmTemplate
2.新建表User,字段如下,注意id是自增主键。
代码实现
1.pojo包下新建User.java
package com.badao.ssm.ssmTemplate.pojo;public class User {private int id;private String userName;private String remark;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}}
2.mapper包新建UserMapper.java接口
package com.badao.ssm.ssmTemplate.mapper;import java.util.List;import com.badao.ssm.ssmTemplate.pojo.User;public interface UserMapper {public int insertUser(User user);public int deleteUser(int id);public int updateUser(User user);public User getUser(int id);public List<User> findUsers(String userName);
}
3.mapper包下新建UserMapper.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="com.badao.ssm.ssmTemplate.mapper.UserMapper"><insert id="insertUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">insert into User(userName, remark) values(#{userName}, #{remark})</insert><delete id="deleteUser" parameterType="int">delete from User where id= #{id}</delete><update id="updateUser" parameterType="user">update User set userName = #{userName}, remark = #{remark} where id= #{id}</update><select id="getUser" parameterType="int" resultType="user">select id,userName as userName, remark from User where id = #{id}</select><select id="findUsers" parameterType="string" resultType="user">select id, userName as userName, remark from Userwhere userName like concat('%', #{userName}, '%')</select>
</mapper>
其中namespace属性要与接口的全路径一样,即包名加接口名。
注意id为自增主键,所以针对于mybatis要配置:
seGeneratedKeys="true" keyProperty="id"
4.配置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><!-- 别名 --><typeAlias alias="user" type="com.badao.ssm.ssmTemplate.pojo.User"/></typeAliases><!-- 数据库环境 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssmTemplate"/><property name="username" value="root"/><property name="password" value=""/></dataSource></environment></environments><!-- 映射文件 --><mappers><mapper resource="com/badao/ssm/ssmTemplate/mapper/UserMapper.xml"/></mappers>
</configuration>
注:
别名配置是为了以后在别的地方用的时候不用写太长的别名。
映射文件要与上面的mapper文件所在的位置相对应。
5.配置log4j.properties
log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
6.配置SqlSessionFactoryUtils类
package com.badao.ssm.ssmTemplate.utils;import java.io.IOException;import java.io.InputStream;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 SqlSessionFactoryUtils {private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class;private static SqlSessionFactory sqlSessionFactory = null;private SqlSessionFactoryUtils() {}public static SqlSessionFactory getSqlSessionFactory() {synchronized (LOCK) {if (sqlSessionFactory != null) {return sqlSessionFactory;}String resource = "mybatis-config.xml";InputStream inputStream;try {inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();return null;}return sqlSessionFactory;}}public static SqlSession openSqlSession() {if (sqlSessionFactory == null) {getSqlSessionFactory();}return sqlSessionFactory.openSession(true);}
}
测试CRUD
1.新建MybatisMain.java 用于测试CRUD
package com.badao.ssm.ssmTemplate.main;
import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;import com.badao.ssm.ssmTemplate.mapper.UserMapper;
import com.badao.ssm.ssmTemplate.pojo.User;
import com.badao.ssm.ssmTemplate.utils.SqlSessionFactoryUtils;
public class MybatisMain {public static void main(String[] args) {testUserMapper();}private static void testUserMapper() {Logger log = Logger.getLogger(MybatisMain.class);SqlSession sqlSession = null;try {sqlSession = SqlSessionFactoryUtils.openSqlSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//测试查询/*Role role = roleMapper.getRole(1l);log.info(role.getRoleName());*///测试更新/*Role role3 = new Role();role3.setId(1l);role3.setRoleName("YSH");role3.setNote("测试更新");int updateResult = roleMapper.updateRole(role3);*///测试插入/*testInsert();User user =new User();user.setUserName("霸道");user.setRemark("测试");int insertResult = userMapper.insertUser(user);if(insertResult == 0) {System.out.println("插入失败");log.info("插入失败");}else {System.out.println("插入成功");log.info("插入成功");}*///测试查询/*User user2 = userMapper.getUser(1);log.info("查询到的用户名为:"+user2.getUserName());*///测试更新/*User user3 = new User();user3.setId(1);user3.setUserName("霸道------");user3.setRemark("更新成功了");int updateResult = userMapper.updateUser(user3);if(updateResult == 0) {System.out.println("更新失败");log.info("更新失败");}else {System.out.println("更新成功");log.info("更新成功");}*///测试删除/*int deleteResule = userMapper.deleteUser(1);if(deleteResule == 0) {System.out.println("删除失败");log.info("删除失败");}else {System.out.println("删除成功");log.info("删除成功");}*///测试模糊查询/*List<User> userList = userMapper.findUsers("霸");for (User user : userList) {System.out.println(user.getUserName());}*/} finally {if (sqlSession != null) {sqlSession.close();}}}private static void testInsert() {// TODO Auto-generated method stub}}
2.测试插入
2.测试查询
3.测试更新
4.测试删除
5.测试模糊查询
项目下载
github:
https://github.com/badaoliumang/SSMCodeCollection/tree/master/MybatisTemplate
项目总目录
mybatis中使用XML配置文件方式实现CRUD模板流程相关推荐
- Mybatis中SqlMapConfig.xml配置文件的使用
文章目录 SqlMapConfig.xml中配置的内容和顺序如下 properties(属性) SqlMapConfig.xml引用如下 typeAliases(类型别名) mybatis支持别名: ...
- mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件
因xml文件中的比较符合与标签符合一样,系统为区分比较符合就需要特殊标签包裹下: <select id="queryRefundTimeBorrowerInfo"result ...
- spring xml配置文件方式和注解方式的优缺点
xml配置文件方式优点: 1.降低耦合,使容易扩展. 2.对象之间的关系一目了然. 3.xml配置文件比注解功能齐全. xml配置文件方式缺点: 1.配置文件配置工作量相对注解要打. 注解方式优点: ...
- Android中Manifest.xml配置文件
Android中Manifest.xml配置文件里面有很多的属性,下面对部分进行了整理,还没有整理完全. A.基本框架: <?xml version="1.0" encodi ...
- MyBatis框架基于XML配置文件开发
MyBatis框架基于XML配置文件开发 本文内容涉及MyBatis框架开发的传参,多表查询,结果封装: 说明: 当前使用的是mysql数据库, 测试在maven工程下: 数据库表: book表: k ...
- Winform中自定义xml配置文件后对节点进行读取与写入
场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...
- mybatis加载xml配置文件
<build><finalName>bizcloud-tcb2b</finalName><!-- mybatis加载xml配置文件的配置 -->< ...
- IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法
关于IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法,简单粗暴直接! 问题产生及解决过程 产生的报错 解决过程 问题产生及解决过程 产生的报错 最近在研究IDEA的使用以及boots ...
- mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...
一.注解方式 pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java org. ...
最新文章
- BlockChain:《Blockchain Gate》听课笔记——区块链的1.0架构 VS 区块链3.0架构+个人理解
- Pytorch中DataLoader类
- windows 只能同时 启动一个_一个u盘能否刻入win 7、win10等多个系统?该怎么做?...
- 精通ASP.NET MVC ——属性路由
- 局域网打印机反应慢_为什么你的Excel这么慢,这些原因必须要知道!
- 插入排序算法(C实现)
- java web空指针,java - Web服务中的Java空指针异常@autowired [重复] - 堆栈内存溢出
- win10 Anaconda 安装教程
- java删除cookie_JAVAWEB使用保存cookie、删除cookie、获取cookie工具类
- mac无法正确打开html,苹果MacBook电脑打不开网页不能访问怎么办
- UnityShader[3]屏幕后处理学习笔记
- 【IT项目管理】第5章 保障项目进度
- POJ 3233 矩阵快速幂
- 微信最新版下载 8.0.6
- C 龟兔赛跑题目:T分钟后乌龟和兔子谁跑得快?
- 吴恩达机器学习python实现8 异常检测及推荐系统
- [番外]:带你玩正则1--数据遍地是,看你取不取
- spring boot + gateway + nacos 网关统一代理
- 结构体初始化为0的技巧!!
- 图像处理——中值滤波
热门文章
- Java线程中wait、await、sleep、yield、join用法总结
- MySQL安装及可能出现的问题
- 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?
- 银河麒麟svn: E215000: GNOME Keying被锁定,并且我们处于非交互方式
- java 数据库提交,java.sql.Statement向数据库提交的语句不可以是SQL语句的()。
- java并发实战编程pdf_「原创」Java并发编程系列25 | 交换器Exchanger
- php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别
- python networkx进行最短路径分析_NetworkX vs Scipy所有最短路径算法
- spring.profiles.active配置了没生效_一文带你彻底学会 Git Hooks 配置
- mysql查找内容某字符串出现的次数_查找MySQL中特定字符串出现的次数?