mybatis 学习总结---基本使用
Posted virgosnail
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 学习总结---基本使用相关的知识,希望对你有一定的参考价值。
孤傲苍狼:mybatis学习总结系列
1. 新建Maven项目
maven 依赖:
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>
2. 定义实体类
package com.skd.mybits.domain; public class User { int id; String name; Integer age; public User() { super(); } public User(int id, String name, Integer age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
3. 配置文件
3.1 mybatis的配置文件
<?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> <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/mybatis" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <!-- 注册 UserMapper.xml 文件--> <mappers> <mapper resource="UserMapper.xml"/> </mappers> </configuration>
3.2 定义user实体类的映射文件
<?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,习惯上设置实体类的全限定类名,保证唯一性 --> <mapper namespace="com.skd.mybits.domain.UserMapper"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,程序中可通过 namespace+id 定位到一个具体的SQL语句并进行调用 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 ,此时对象的属性和表中的字段必须一致,否则查询到的对象属性为null resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 --> <!-- 根据id查询得到一个user对象 --> <select id="getUser" parameterType="int" resultType="com.skd.mybits.domain.User"> select * from users where id=#{id} </select> <select id="getAllUser" resultType="com.skd.mybits.domain.User"> select * from users </select> <insert id="addUser" parameterType="com.skd.mybits.domain.User"> insert into users (id,name,age) values(#{id}, #{name}, #{age}) </insert> <update id="updateUser" parameterType="com.skd.mybits.domain.User"> update users set name=#{name},age=#{age} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from users where id=#{id} </delete> </mapper>
4. 代码示例
package com.skd.mybits.domain; import java.io.InputStream; import java.util.List; import javax.jws.soap.SOAPBinding.Use; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Operate { public static void main( String[] args ) { User user = new User(12, "12", 12); add(user); delete(user); get(1); } public static void add(User user) { // 通过实体类映射文件的 namespace + id 定位到一条具体的SQL语句进行调用 String namespace = "com.skd.mybits.domain.UserMapper.addUser"; getSession().insert(namespace, user); System.out.println("add"+user); } public static void get(int id) { String namespace = "com.skd.mybits.domain.UserMapper.getUser"; Object user = getSession().selectOne(namespace, id); System.out.println("get"+user); } public static void getAll() { String namespace = "com.skd.mybits.domain.UserMapper.getAllUser"; List<Object> selectList = getSession().selectList(namespace); for (Object user : selectList) { System.out.println("getAll"+user); } } public static void update(User user) { String namespace = "com.skd.mybits.domain.UserMapper.updateUser"; getSession().update(namespace, user); System.out.println("update"+user); } public static void delete(User user) { String namespace = "com.skd.mybits.domain.UserMapper.deleteUser"; getSession().delete(namespace, user.getId()); System.out.println("delete"+user); } public static SqlSession getSession(){ // mybatis的配置文件 String resource = "conf.xml"; // 加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Operate.class.getClassLoader().getResourceAsStream(resource); // 构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); // true:通过 SqlSession 增删改查后自动提交 // false:通过 SqlSession 增删改查后需要手动提交 SqlSession session = sessionFactory.openSession(true); return session; } }
5. 数据库表
CREATE TABLE `users` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上是关于mybatis 学习总结---基本使用的主要内容,如果未能解决你的问题,请参考以下文章