Mybatis入门级数据库操作
只是记录Mybatis入门级的数据库操作,想要深入学习,请参考官方文档
什么是 MyBatis?
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
实例:
要对数据库操作需要对数据库操作的jar包,用mybatis就需要mybatis的jar包
我用到的是这两个jar包
1.定义持久化类
User.java
package com.Model; public class User { private Integer userid; private String username; private String password; public int getUserid() { return userid; } public void setUserid(int userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String toString(){ return userid+","+username+","+password; } }2.定义DAO层(与数据库进行交互,数据库增删查改)
userMapper.java 和userMapper.xml(.Java文件和.xml文件名字要一致)
userMapper.java
package com.Dao; import java.util.List; import com.Model.User; public interface UserMapper { public int insert(User user) throws Exception; public int delete(int userid) throws Exception; public List<User> findall() throws Exception; public List<User> findById(int userid) throws Exception; public int update(User user) throws Exception; }
userMapper.xml(实现UserMapper里定义的增删查改方法)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.Dao.UserMapper"> <resultMap type="User" id="UserResult"> <id column="userid" javaType="java.lang.Integer" property="userid" /> <result column="username" javaType="java.lang.String" property="username" /> <result column="password" javaType="java.lang.String" property="password" /> </resultMap> <insert id="insert" parameterType="com.Model.User" useGeneratedKeys="true" keyProperty="userid"> INSERT INTO user (username,password) values(#{username},#{password}) </insert> <delete id="delete" parameterType="int"> DELETE FROM user WHERE userid = #{userid} </delete> <select id="findall" resultMap="UserResult"> SELECT * FROM user </select> <select id="findById" parameterType="int" resultMap="UserResult"> SELECT * FROM user WHERE userid = #{userid} </select> <update id="update" parameterType="com.Model.User" > UPDATE user SET username = #{username}, password = #{password} WHERE userid = #{userid} </update> </mapper>3.要实现以上方法就要与数据库取得连接
第一种方法:两个文件
(1)mysql.property
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/db_mybatis?useUnicode\=true&characterEncoding\=gbk jdbc.username=root jdbc.password=xidaojia
(2)Configuration.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>
<!-- 引入MySQL配置文件--> <properties resource="mysql.properties"></properties> <typeAliases> <package name="com.Model" /> </typeAliases> <!--配置数据源 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="UNPOOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!--自动扫描包下面的.xml配置文件 --> <mappers> <package name="com.Dao" /> </mappers> </configuration>
第二种方法:
<?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> <!-- mybatis别名定义 --> <typeAliases> <typeAlias alias="User" type="
com.Model"/> </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://127.0.0.1:3306/javaweb" /> <property name="username" value="root"/> <property name="password" value="xidaojia"/> </dataSource> </environment> </environments> <!-- mybatis的mapper文件,每个xml配置文件对应一个接口 --> <mappers> <mapper resource="UserMapper.xml"/> </mappers></configuration> 4.设置了一个类 DBTool,用于在下面将要说的测试文件中获得SqlSessionFactory,类似于Hibernate中HibernateSessionFactory
package com.Tools; 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; public class DBTools { public static SqlSessionFactory sessionFactory; static{ try { Reader reader = Resources.getResourceAsReader("Configuration.xml"); sessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (Exception e) { e.printStackTrace(); } } public static SqlSession getSession(){ return sessionFactory.openSession(); } }5.下面就是对以上东西的测试:
package com.Test; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.Dao.UserMapper; import com.Model.User; import com.Tools.DBTools; public class test { public static void main(String[] args) { // insert(); // delete(); // findall(); // findById(); update(); } private static void insert() { User user = new User(); SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); user.setUsername("mybatis2"); user.setPassword("javaweb"); try { mapper.insert(user); System.out.println(user.toString()); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } private static void delete() { SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { mapper.delete(2); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } private static void findall() { SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { List<User> list = mapper.findall(); System.out.println(list); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } private static void findById() { SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { List<User> list = mapper.findById(1); System.out.println(list); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } private static void update() { SqlSession session = DBTools.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = new User(); user.setUsername("Mybatis"); user.setPassword("database"); user.setUserid(1); try { mapper.update(user); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } } }以上是对自己学习mybatis的感受,小学生所做,如果大牛看到多多指正。