mybatis 不整合spring 入门小例子
先上一个搭建完的项目结构截图:
相对比较重要的配置文件有 db.properties , SqlMappingConfig.xml , mapper/User.xml , log4j.properties (主要是 mybatis 有日志管理这些依赖 后面 pom.xml 中也要添加 log4j 的jar 包依赖)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=Mede645
db.properties
<?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> <!-- 加载属性文件 -->
<properties resource="config/db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties> <!-- 全局配置参数,需要时再设置 -->
<!-- <settings> </settings> --> <typeAliases>
<!-- 别名定义 -->
<!-- 针对单个别名定义 type:类型的路径 alias:别名 -->
<!-- <typeAlias type="cn.czy.mybatis.po.User" alias="user"/> -->
<typeAlias type="com.ghc.pojo.User" alias="user" />
<!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
<!--<package name="cn.com.mybatis.mapper" />-->
</typeAliases> <!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis -->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="Mede645" />
</dataSource>
</environment>
</environments> <!-- 加载 映射文件 -->
<mappers> <!--通过resource方法一次加载一个映射文件 -->
<!--注意这里的路径和xml文件 -->
<mapper resource="mapper/User.xml" />
<!-- <mapper resource="mapper/userMapper.xml" />
<mapper resource="mapper/OrdersMapperCustom.xml"/>--> <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 -->
<!-- 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 -->
<!-- 中 上边规范的前提是:使用的是mapper代理方法
<package name="cn.com.czy.mybatis.two.mapper" />--> </mappers> </configuration>
SqlMappingConfig.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="test"> <!-- 在 映射文件中配置很多sql语句 -->
<!-- 将sql语句封装到mappedStatement对象中,所以将id称为statement的id -->
<!-- parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 -->
<!-- #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 -->
<!-- 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 -->
<!-- resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 -->
<select id="findUserById" parameterType="int" resultType="user">
SELECT * FROM USER WHERE id=#{value}
</select> <select id="findUserByNameLike" parameterType="java.lang.String" resultType="user">
SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
</select> <!--OGNL 获取对象的属性值-->
<insert id="addUser" parameterType="user">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id()
</selectKey>
INSERT INTO user(username,birthday,sex,address) values(#{userName},#{birthday},#{sex},#{address})
</insert> <!--删除用户-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from USER where id = #{id}
</delete> <!--更新用户-->
<update id="updateUser" parameterType="user">
update User set username=#{userName},sex=#{sex} where id=#{id}
</update>
</mapper>
User.xml
log4j.rootLogger=DEBUG,A1
log4j.logger.org.springframework=debug
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
log4j.properties
package com.ghc.pojo; import java.util.Date; public class User {
private int id;
private String userName;
private Date birthday;
private String sex;
private String address; 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 Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
}
}
pojo对象User代码
下面是比较重要的 怎么读取配置文件然后映射数据库了 测试了
package com.ghc.main; import com.ghc.pojo.User;
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 java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.io.InputStream; public class Test { public SqlSessionFactory getSqlSessionFactory() throws IOException{
// mybatis 配置文件
String mybatisConfigFile = "config/SqlMappingConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(mybatisConfigFile); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory; } public static void main(String [] args) throws Exception{
new Test().findUserByName();//.findUserById();
new Test().insertUser();
new Test().deleteUser();
new Test().updateUser(); } public void findUserById(){
SqlSession sqlSession = null;
try {
sqlSession = this.getSqlSessionFactory().openSession();
User user = sqlSession.selectOne("test.findUserById",10);
System.out.println("user name: "+user.getUserName());
}
catch(Exception e){
e.printStackTrace();
}
finally{if(sqlSession!=null)
try{
sqlSession.close();
}
catch(Exception e){
e.printStackTrace();
}} } public List<User> findUserByName() throws Exception{
List<User> userList = new ArrayList<User>();
SqlSession sqlSession = this.getSqlSessionFactory().openSession();
userList = sqlSession.selectList("test.findUserByNameLike","小明");
for(User user:userList){
System.out.println(user.getUserName());
}
sqlSession.close();
return userList;
} public void insertUser() throws IOException{
User user = new User();
//user.setId(42);
int temp = user.getId();
user.setAddress("麓谷");
user.setBirthday(new Date());
user.setSex("女");
user.setUserName("王老五");
SqlSession sqlSession = this.getSqlSessionFactory().openSession();
sqlSession.insert("test.addUser",user);
sqlSession.commit();
sqlSession.close();
} public void deleteUser() throws IOException{
SqlSession sqlSession = this.getSqlSessionFactory().openSession();
sqlSession.delete("test.deleteUser",42);
sqlSession.commit();
sqlSession.close();
} public void updateUser()throws IOException{
SqlSession sqlSession = this.getSqlSessionFactory().openSession();
User user = new User();
user.setUserName("钻石王老五");
user.setId(43);
user.setSex("男");
sqlSession.update("test.updateUser",user);
sqlSession.commit();
sqlSession.close();
}
}
com.ghc.main.Test
下一篇我将代入 dao 层开发
mybatis 不整合spring 入门小例子的更多相关文章
- Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子
Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子 第一个例子都是比较简单的博客园登录界面,就像学习编程语言时候都是从Hello,World!开始. 1 ...
- Spring aop 小例子demo
由于最近的服务项目提供接口有一个需求,所有操作都必须检查操作的服务可用,所以感觉Aop特别适合实施.完成学习的小例子. 关于spring-Aop原理:http://m.oschina.net/blog ...
- 基于vue-cli、elementUI的Vue超简单入门小例子
- 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. - 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多. #如若没有安装过vu ...
- Ajax入门小例子
大牛文章:http://www.cnblogs.com/guduoduo/p/3681296.html ---Ajax基础学习 http:/ ...
- backbone入门小例子
最近听了个backbone的分享,为了避免听不懂,就先做了个小例子 例子很简单,效果如下 基本视图模板: <script type="tex/template" id=&qu ...
- spring+spring mvc+JdbcTemplate 入门小例子
大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒) https://www.cnblo ...
- Spring MVC 简介及入门小例子
说明:文章内容全部截选自实验楼教程[Spring MVC 简易教程] 一.什么是 Spring MVC Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring ...
- SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解
SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...
- SpringBoot_MyBatisPlus快速入门小例子
快速入门 创建一个表 我这里随便创建了一个air空气表 idea连接Mysql数据库 点击右侧database再点击添加数据库 找到Mysql 添加用户名,密码,数据库最后点击测试 测试成功后在右侧就 ...
随机推荐
- 使用Memcached提高.NET应用程序的性能(转)
标签:分布式缓存 .NET Memcached Performance 性能 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zh ...
- linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
本文转载自http://www.169it.com/article/14360294838474691537.html linux/Centos下查看网卡Mac地址,输入命令: #ifconfig - ...
- 微软职位内部推荐-Senior Software Development Engineer_Commerce
微软近期Open的职位: Are you looking for a high impact project that involves processing of billions of dolla ...
- Intellij Idea 创建JavaWeb项目入门(一)
Idea创建JavaWeb项目步骤:1.打开Intellij Idea IDE,然后点击Create New Project 2.左侧选择Java Enterprise,右侧选择Web Applica ...
- 实验---反汇编一个简单的C程序(杨光)
反汇编一个简单的C程序 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163 ...
- 软工团队(hello world)组员介绍
姜中希:喜欢编程,善于交际. 周盼超:喜欢编程. 王昭博:思路比较清晰,可以明确开发步骤. 刘洪阳:思想笔记广泛,可以把很多有关联的东西结合起来. 刘双勃:喜欢编程,踏实,比较容易坚持.
- Alpha 冲刺三
团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 发布界面布局完成.登 ...
- Beta冲刺——day2
Beta冲刺--day2 作业链接 Beta冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602134 王龙 ...
- 四则运算生成程序——GUI支持和部分功能改进
项目成员:张金生 张政 工程地址: https://coding.net/u/jx8zjs/p/paperOne/git ssh://git@git.coding.net:jx8zjs/pap ...
- 设置macbook休眠模式
前言: macbook默认合上盖默认是进入混合休眠模式模式(mode 3),此时电脑还会供电.不想耗电的话关机的话当前的工作状态就丢失了. macbook实际上是可以进入休眠模式的,只是没开放出来,我 ...