Mybaits深入了解(二)—-入门实例
来源:互联网 发布:阿里云404页面设置 编辑:程序博客网 时间:2024/05/21 18:31
- Mybatis CRUD实例
- 实例的开发环境
- 项目的目录结构
- log4jproperties配置
- SqlMapConfigxml的配置
- 创建POJO类
- 映射文件
- 具体代码实现
Mybatis CRUD实例
实例的开发环境
项目的目录结构
log4j.properties配置
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言 分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。想要详细了解的话可以看看下面的博客:log4j.properties 详解与配置步骤。在本项目中的配置:
# Global logging configuration#在开发环境下日志要设置成Debug,生产环境设置成info或errorlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
SqlMapConfig.xml的配置
这是一个关键的配置文件,是mybaits的全局配置文件,不过名称不固定,主要是用来配置数据源、事务等,mybaits的运行环境。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理--> <transactionManager type="JDBC" /> <!-- 数据库连接池--> <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="root" /> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers></configuration>
创建POJO类
package cn.itcast.mybatis.po;import java.util.Date;public class User { private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; }}
映射文件
映射文件的命名最好规范统一下,本实例中命名为User.xml载映射文件中配置sql语句。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="test"><!-- 根据id获取用户信息 --> <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User"> select * from user where id = #{id} </select> <!-- 自定义条件查询用户列表 ,可能返回多条--> <select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User"> select * from user where username like '%${value}%' </select> <!-- 添加用户 AFTER LAST_INSERT_ID() --> <insert id="insertUser" parameterType="cn.itcast.mybatis.po.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="deleteUserById" parameterType="int"> delete from user where id=#{id} </delete> <update id="updateUser" parameterType="cn.itcast.mybatis.po.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update></mapper>
并在SqlMapConfig.xml文件中加载映射文件
<!-- 加载映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers>
具体代码实现
接下来就是具体的代码实现了,在MybatisFirst类中:
package cn.itcast.mybatis.first;import java.io.IOException;import java.io.InputStream;import java.util.Date;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 org.junit.Test;import cn.itcast.mybatis.po.User;public class MybatisFirst { //创建会话工厂 private SqlSessionFactory sqlSessionFactory; @Before public void createSqlSessionFactory() throws IOException{ //配置文件 String resource="SqlMapConfig.xml"; //得到配置文件流 InputStream inputStream=Resources.getResourceAsStream(resource); // 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } @Test public void findUserByIdTest() throws IOException{ SqlSession sqlSession=null; try { //创建数据库会话实例 sqlSession=sqlSessionFactory.openSession(); //根据用户ID查询单个记录 User user=sqlSession.selectOne("test.findUserById", 1); System.out.println(user); } catch (Exception e) { e.printStackTrace(); } finally { if (sqlSession != null) { sqlSession.close(); } } } @Test public void findUserByUsername() throws IOException{ SqlSession sqlSession=null; try { //创建数据库会话实例 sqlSession=sqlSessionFactory.openSession(); //根据用户名查询多条记录 List<User> list=sqlSession.selectList("test.findUserByUsername","张"); System.out.println(list); } catch (Exception e) { e.printStackTrace(); } finally { if (sqlSession != null) { sqlSession.close(); } } } @Test public void testInsert(){ SqlSession sqlSession=null; try { sqlSession=sqlSessionFactory.openSession(); User user=new User(); user.setAddress("廊坊市广阳区"); user.setBirthday(new Date()); user.setSex("1"); user.setUsername("张令"); sqlSession.insert("test.insertUser",user); //提交事务 sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); }finally{ if(sqlSession!=null){ sqlSession.close(); } } } @Test public void testDelete(){ SqlSession sqlSession=null; try { sqlSession=sqlSessionFactory.openSession(); sqlSession.delete("test.deleteUserById",29); //提交事务 sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); }finally{ if(sqlSession!=null){ sqlSession.close(); } } } @Test public void testUpdate(){ SqlSession sqlSession=null; try { sqlSession=sqlSessionFactory.openSession(); User user=new User(); user.setId(26); user.setAddress("河北省南宫市"); user.setBirthday(new Date()); user.setSex("男"); user.setUsername("令仔"); sqlSession.update("test.updateUser",user); //提交事务 sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); }finally{ if(sqlSession!=null){ sqlSession.close(); } } }}
为大家贡献上我写的源码:Mybatis实例源码下载地址
1 0
- Mybaits深入了解(二)—-入门实例
- Mybaits深入了解(二)—-入门实例
- Mybaits深入了解(一)----带你入门
- Mybaits深入了解(三)----mybatis开发Dao的方法
- Mybaits深入了解(三)----mybatis开发Dao的方法
- mybaits入门(CURD)
- 深入了解JSF(二)
- 深入了解JavaScriptCore(二)
- Mybaits深入
- Spring(二)结合myBaits
- 深入了解计算机电源(二)
- 深入了解php之opcode(二)
- 深入了解Handler消息机制(二)
- 深入了解View(二)
- 深入了解RPC <二>
- 深入了解FMDB<二>
- mybaits批量存储记录(有实例)
- mybaits入门(含实例教程和源码)
- 有用的工具
- JSP脚本元素
- SVProgressHUD 到指定位置
- 关于json的问题
- listview如何加载动画,实现每个item都有效果
- Mybaits深入了解(二)—-入门实例
- @NotEmpty、@NotNull、@NotBlank 的区别
- 电池服务官方样例
- android工具-adb & android studio
- 关于Xcode不能打印崩溃日志,捕捉异常
- Android 系统安装 apk 时解压 so 的逻辑问题
- 对拍程序
- 调用相机 实现:视频录制,拍照 保存 上传服务器 UIImagePickerController AVPlayer
- ua收集分析