Mybatis入門,mybatis

來源:互聯網
上載者:User

Mybatis入門,mybatis

一、MyBatis介紹

MyBatis是支援普通SQL查詢,預存程序和進階映射的優秀持久層架構。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始映射,將介面和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成資料庫中的記錄。


Mybatis-3.1.1:http://download.csdn.net/detail/huhui_bj/8575253


二、快速入門

2.1 準備

首先需要添加兩個jar包,一個是mybatis-3.1.1.jar,一個是mysql-connector-java-5.1.7-bin.jar。然後在MySQL中建立資料庫和資料表:

create database mybatis;use mybatis;CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);INSERT INTO users(NAME, age) VALUES('Tom', 12);INSERT INTO users(NAME, age) VALUES('Jack', 11);

2.2 添加Mybatis的設定檔conf.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><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="root" /></dataSource></environment></environments></configuration>

2.3 定義表所對應的實體類

public class User {private int id;private String name;private int age;    //get,set方法}

2.4 定義操作users表的SQL對應檔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.atguigu.mybatis_test.test1.userMapper"> <select id="getUser" parameterType="int" resultType="com.atguigu.mybatis_test.test1.User">select * from users where id=#{id}</select></mapper>

2.5 在conf.xml檔案中註冊userMapper.xml檔案

<mappers><mapper resource="com/atguigu/mybatis_test/test1/userMapper.xml"/></mappers>

2.6 編寫測試代碼

String resource = "conf.xml"; //載入mybatis的設定檔(它也載入關聯的對應檔)Reader reader = Resources.getResourceAsReader(resource); //構建sqlSession的工廠SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//建立能執行對應檔中sql的sqlSessionSqlSession session = sessionFactory.openSession();//映射sql的標識字串String statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser";//執行查詢返回一個唯一user對象的sqlUser user = session.selectOne(statement, 1);System.out.println(user);

三、資料表的CRUD操作

3.1 XML的實現

<insert id="insertUser" parameterType="com.atguigu.ibatis.bean.User">insert into users(name, age) values(#{name}, #{age});</insert><delete id="deleteUser" parameterType="int">delete from users where id=#{id}</delete><update id="updateUser" parameterType="com.atguigu.ibatis.bean.User">update users set name=#{name},age=#{age} where id=#{id}</update><select id="selectUser" parameterType="int" resultType="com.atguigu.ibatis.bean.User">select * from users where id=#{id}</select><select id="selectAllUsers" resultType="com.atguigu.ibatis.bean.User">select * from users</select>

3.2 註解的實現

public interface UserMapper {@Insert("insert into users(name, age) values(#{name}, #{age})")public int insertUser(User user);@Delete("delete from users where id=#{id}")public int deleteUserById(int id);@Update("update users set name=#{name},age=#{age} where id=#{id}")public int updateUser(User user);@Select("select * from users where id=#{id}")public User getUserById(int id);@Select("select * from users")public List<User> getAllUser();}

在conf.xml中註冊這個映射介面:

<mapper class="com.atguigu.ibatis.crud.ano.UserMapper"/>

在DAO類中調用:

public User getUserById(int id) {SqlSession session = sessionFactory.openSession();UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getUserById(id);return user;}

四、幾個可以最佳化的地方

4.1 建立資料庫設定檔

## db.properties<properties resource="db.properties"/><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" />

然後在Mybatis的設定檔conf.xml中加入讀取db.properties的配置:

<!-- 引入資源檔 --><properties resource="db.properties"/>

4.2 為實體類定義別名

<!-- 配置實體類的別名 --><typeAliases><!-- <typeAlias type="com.mybatis.test1.User" alias="_User"/> --><package name="com.mybatis.bean"/> <!-- 掃描這個包 --></typeAliases>
上面的配置可以簡化SQL映射xml檔案中的引用,不再需要每次都要寫類的全路徑。


4.3 添加log4j設定檔,列印日誌資訊

#log4j.propertieslog4j.rootLogger=DEBUG, Console#Consolelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%nlog4j.logger.java.sql.ResultSet=INFOlog4j.logger.org.apache=INFOlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.